该用户从未签到
|
struts2 web.xml配置可以两种) d1 S1 b/ p( |! k8 G$ k. S! X
<filter>
7 Z6 D1 M1 h2 s/ G, m7 } <filter-name>struts2</filter-name>" F4 X' r" h$ j
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
6 m# G3 `3 G$ ~# w% A8 ]2 ? </filter>) o) Q) e2 }# ]! r5 d2 d7 F5 o+ G: ?
<filter-mapping>
2 D, E8 O. r7 Z1 v( j+ J& U2 C <filter-name>struts2</filter-name>8 Z/ Q" j$ ]7 i, T4 G
<url-pattern>/*</url-pattern>
% i7 W) G8 c3 o </filter-mapping>$ \8 E0 _$ m" v7 [
或- I N6 c) p3 V, D, U, G9 u4 m9 F
<filter>
& i5 c% X( N8 t( H4 R& M <filter-name>struts2</filter-name>% v5 v3 a) X( [8 N" T
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>- O+ W+ V- J: f
</filter>
7 _+ u6 r+ e+ N: [ <filter-mapping>
M( ]' [" Q& s( w; b* W1 L <filter-name>struts2</filter-name>
' u& R' W( }* x/ y# Y8 W <url-pattern>/*</url-pattern>
3 k# Z. M' J7 X! y$ N, H </filter-mapping>
8 j( {( e% }2 d: J5 M两者有什么区别呢?
" d6 d2 D0 p3 s: h/ gFilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.!
" P! z' N9 d1 UStrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的.!0 G$ |& S5 n6 p
这样的改革当然是有好处的.!
1 i6 f8 O' N/ d! q7 D为什么这么说.? 应该知道如果我们自己定义过滤器的话, 是要放在strtus2的过滤器之前的, 如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html!; Z) V4 ]0 A8 Q; l# r7 l# d4 v
那我现在有需求, 我必须使用Action的环境,而又想在执行action之前拿filter做一些事, 用FilterDispatcher是做不到的.!
* V( C* {9 C; N, O6 U, s c" \' a 那么StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.!
S/ E( w3 u6 _3 O( O) K3 Q' w( _给你打个比喻, 现在有病人要做手术, 现在struts2要做两件事, 搭病床(环境),执行手术.! 那么打麻药的工作呢.? 不可能要病人站着打吧, 所以必须有病床的环境,打完麻药之后再动手术.! 这个比喻非常形象了.!
; l9 H- `1 c4 J; E, w- J. a- T' o5 _! Y r
|
|