该用户从未签到
|
struts2 web.xml配置可以两种
' l- y$ M9 R+ q; ]3 e <filter>( t. L' D& T2 B3 U+ n3 T: c
<filter-name>struts2</filter-name>3 d3 Z! q# g* n: A! f$ J% d
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>( @6 p" A. M# C! R% q5 w% F3 h
</filter> h# [1 y+ h+ H6 W5 ?5 i% i. Y
<filter-mapping>$ J! {( }) R: g, O) e# c! T6 ]
<filter-name>struts2</filter-name>
+ p9 }9 D/ S" _$ ~2 S <url-pattern>/*</url-pattern>
" Z5 o: A* M/ O4 {8 S </filter-mapping>& N7 n: C, k @: |" @0 R
或
J! \5 f! o9 u1 {3 l- R% Y <filter>
5 l6 n6 ]1 M; w9 ^ <filter-name>struts2</filter-name>
/ k3 U3 k3 t) T! m4 c <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>! o, Y1 k, j& C+ G$ w5 Q/ q; Z
</filter>
2 |- x( W. M5 k' c2 b6 Q# } <filter-mapping>
7 k6 K/ \9 a( x" Q <filter-name>struts2</filter-name> |, L% n' ?2 w
<url-pattern>/*</url-pattern>
2 d. U8 k9 {2 g. A$ I3 v </filter-mapping>+ E, B* Y9 O4 |3 W8 u% K& U& \9 D) g
两者有什么区别呢?5 G# p4 J- b' B+ U+ t* I+ u
FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.! a. }; y E+ g* K8 D
StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的.!6 q% P/ ^4 {, z0 I
这样的改革当然是有好处的.!+ M$ S) n7 C/ m9 Q9 B1 z
为什么这么说.? 应该知道如果我们自己定义过滤器的话, 是要放在strtus2的过滤器之前的, 如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html! h0 X! P! [4 ^$ ~* W
那我现在有需求, 我必须使用Action的环境,而又想在执行action之前拿filter做一些事, 用FilterDispatcher是做不到的.!
6 }8 S5 C/ w4 a G+ f2 a6 U 那么StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.!
3 L# `' U& L: M给你打个比喻, 现在有病人要做手术, 现在struts2要做两件事, 搭病床(环境),执行手术.! 那么打麻药的工作呢.? 不可能要病人站着打吧, 所以必须有病床的环境,打完麻药之后再动手术.! 这个比喻非常形象了.!9 t2 W' a/ n& Z+ G& L
. n% x% A2 w# g8 K* y( O- ]& C8 T |
|