该用户从未签到
|
struts2 web.xml配置可以两种
b8 C' j2 `0 P' Z; A4 @ <filter>6 A& ]3 ]- O P( M# P/ N
<filter-name>struts2</filter-name>0 k6 L% N# V) g( h
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
: \8 E2 P# W0 j) D: b$ H6 O </filter>: r! p4 }+ s$ K7 p4 l ^
<filter-mapping>
) M0 X& t# {" y$ G7 F <filter-name>struts2</filter-name>3 Y ^) o" |" o( ^0 l3 X* l/ y+ c4 t
<url-pattern>/*</url-pattern>, V7 Q2 z; U) q% ~0 s
</filter-mapping>; a, w+ t, }3 }6 e% Y+ s: y
或
0 A+ u. [ y( q) z% L2 y2 U7 s7 t <filter>* Y3 V0 Y3 s" K N! D
<filter-name>struts2</filter-name>7 x; F1 T8 M' a: t" m
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>) N5 j/ J; r. A$ n0 v. G. H2 S( _
</filter>5 J' O* W! K3 g
<filter-mapping>5 P9 C8 K) D6 E5 _4 s" D. [; V. u
<filter-name>struts2</filter-name>! e7 w1 O' j+ I3 Z
<url-pattern>/*</url-pattern>
2 O0 [! C9 Q) ^ </filter-mapping>
& s+ x; \/ V0 B& Q+ i两者有什么区别呢?
& [4 T3 p7 D" t8 q: M% o% kFilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.!: ^) i( \* q* {3 F+ x* r8 Q
StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的.!: t+ @# r" P; a7 z7 C* l3 R
这样的改革当然是有好处的.!) y- N! \. Z( ^! p0 z6 e
为什么这么说.? 应该知道如果我们自己定义过滤器的话, 是要放在strtus2的过滤器之前的, 如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html!3 r/ a9 P4 v& E
那我现在有需求, 我必须使用Action的环境,而又想在执行action之前拿filter做一些事, 用FilterDispatcher是做不到的.!
% r0 L: e% s7 V% Z @ 那么StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.!
! P T% g* J0 n! A# Q) P% I! m给你打个比喻, 现在有病人要做手术, 现在struts2要做两件事, 搭病床(环境),执行手术.! 那么打麻药的工作呢.? 不可能要病人站着打吧, 所以必须有病床的环境,打完麻药之后再动手术.! 这个比喻非常形象了.!6 D b6 O/ Y7 Q5 A% D1 i9 H
3 I/ E+ Z/ w, \4 x5 v |
|