该用户从未签到
|
struts2 web.xml配置可以两种7 h( d( u3 Q5 ?
<filter>/ Y6 ^& f+ @- ^0 k7 N* J- [6 i; `
<filter-name>struts2</filter-name>
9 h6 }3 U- H" t1 j+ F <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>" P( V5 o+ i5 c
</filter>
" I- Q4 O! ^5 P( q$ u <filter-mapping>
& G) u+ J6 n% B. x: D <filter-name>struts2</filter-name>
( s/ Y& K. \1 I) k <url-pattern>/*</url-pattern>
2 g& I6 X' D, M' t- } </filter-mapping>+ P% f# t- `3 o o( }) O4 K4 R
或, m0 }0 D/ p, \5 `& ~5 Z+ b
<filter>
- e1 Y( H6 D8 N# \* N4 W- S <filter-name>struts2</filter-name>
. `* }* F& R i- ^2 ]7 c6 Q <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
% e/ a1 S2 I- ]* y% S, X0 Q1 i </filter>- ?$ A s4 N# G5 b7 p- t# `2 Y
<filter-mapping>4 l: a. o, P4 v
<filter-name>struts2</filter-name>' W6 \- ^( c, M
<url-pattern>/*</url-pattern>7 a9 Q; @# G& s# S$ S" \8 K7 j
</filter-mapping>
V; C. R/ N: I两者有什么区别呢?
( j% z6 a7 J I L; K \& t lFilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.!
9 l- y2 [/ U8 [9 Z U7 RStrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的.!
( J9 F* ~, ]/ ~& E J这样的改革当然是有好处的.!
, a1 k L- p% A为什么这么说.? 应该知道如果我们自己定义过滤器的话, 是要放在strtus2的过滤器之前的, 如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html!
7 z2 ?# m, t$ z, a, P那我现在有需求, 我必须使用Action的环境,而又想在执行action之前拿filter做一些事, 用FilterDispatcher是做不到的.!7 [! y& h. w: i4 N% t5 b
那么StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.!: m. e0 Q( O2 P( C+ @5 p3 I
给你打个比喻, 现在有病人要做手术, 现在struts2要做两件事, 搭病床(环境),执行手术.! 那么打麻药的工作呢.? 不可能要病人站着打吧, 所以必须有病床的环境,打完麻药之后再动手术.! 这个比喻非常形象了.!; R. s; P, a0 V+ f& `. J
3 D8 k4 A- j% ?
|
|