该用户从未签到
|
struts2 web.xml配置可以两种/ ~8 _+ l$ K- x+ `" C
<filter>
3 Z' j) E" x+ t: P% {2 p <filter-name>struts2</filter-name>( t! n6 O' V7 q, |) y! C& E
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>6 `# I' I: R, a: b# Q& s
</filter>+ u& g- y% \% i; U" X
<filter-mapping>5 r+ N7 |9 K4 q% u- q8 [
<filter-name>struts2</filter-name>
8 ^) V7 X% Y1 X: j# Y+ v <url-pattern>/*</url-pattern>
& {9 E, K( L, x7 u </filter-mapping>- Q& S0 T' O' D, ?) a+ \6 ^/ k
或
6 X( S. M( i# D2 y4 |, @2 P- G <filter>, c( F* t$ K' H/ X P$ q$ b
<filter-name>struts2</filter-name>7 H& @/ W( f- D& h/ x; H) _! D# S
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>8 E- R1 m7 @% A% D. k
</filter>/ T! I6 |; S0 P, ?
<filter-mapping>, c0 b3 o7 w+ I
<filter-name>struts2</filter-name>' r5 t' \( s2 h( V
<url-pattern>/*</url-pattern>+ R5 h1 z& O4 T2 g
</filter-mapping>
2 Z+ ]: E5 F u0 k8 X( U' P两者有什么区别呢?; e3 \9 V- f8 x8 M. x0 s
FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.!5 G% w k$ b; W* u; m; h! [+ Y
StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的.!
( ?1 e- k' a, e) |5 B& b' O) X这样的改革当然是有好处的.!
# W# Y+ |9 Q3 ?! v为什么这么说.? 应该知道如果我们自己定义过滤器的话, 是要放在strtus2的过滤器之前的, 如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html!
2 [. O; n0 g' D9 K那我现在有需求, 我必须使用Action的环境,而又想在执行action之前拿filter做一些事, 用FilterDispatcher是做不到的.!" F0 ~2 M# N; L) H( z6 s+ X
那么StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.!
& e& B A4 K3 B/ J& R给你打个比喻, 现在有病人要做手术, 现在struts2要做两件事, 搭病床(环境),执行手术.! 那么打麻药的工作呢.? 不可能要病人站着打吧, 所以必须有病床的环境,打完麻药之后再动手术.! 这个比喻非常形象了.!
+ p7 z0 x. `# [1 o
L" [/ m8 E" x2 J4 b: j' V |
|