标签:style blog class code c java
编写一个拦截ScheduleAction的拦截器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 |
package
com.manager.interceptor; import java.util.Date; import com.manager.action.ScheduleAction; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; public
class ScheduleInterceptor extends
MethodFilterInterceptor { // 为该拦截器取一个名称 private
String name; public
String getName() { return
name; } public
void setName(String name) { this .name = name; } @Override protected
String doIntercept(ActionInvocation arg0) throws
Exception { // TODO Auto-generated method stub // 取得被拦截的Action的实例 ScheduleAction scheduleAction = (ScheduleAction) arg0.getAction(); // 打印执行开始的实现 System.out.println(name + "拦截器的动作----------" + "开始执行ScheduleAction的时间为:"
+ new Date()); // 取得开始执行Action的时间 long
start = System.currentTimeMillis(); // 执行该拦截器的后一个拦截器 // 如果该拦截器后没有其他拦截器,则直接执行拦截器中includeMethods对应的方法 String result = arg0.invoke(); return
result; } } |
struts.xml中配置该拦截器
<interceptors> <!-- 配置ScheduleInterceptor --> <interceptor name="ScheduleInterceptor" class="com.manager.interceptor.ScheduleInterceptor"> <!-- 为拦截器指定参数值 --> <param name="name">Schedule</param> </interceptor> </interceptors>
为action应用此拦截器
<action name="schedule" class="schedule"> <result name="success"></result> <!-- 配置系统的默认拦截器 --> <interceptor-ref name="defaultStack"></interceptor-ref> <!-- 应用自定义的Schedule拦截器 --> <interceptor-ref name="ScheduleInterceptor"> <param name="name">该明后的拦截器</param> <!-- 需要拦截的方法 list为Action中的方法名--> <param name="includeMethods">list</param> </interceptor-ref> </action>
配置拦截器栈
<interceptors> <!-- 配置ScheduleInterceptor --> <interceptor name="ScheduleInterceptor" class="com.manager.interceptor.ScheduleInterceptor"> <!-- 为拦截器指定参数值 --> <param name="name">Schedule</param> </interceptor> <!-- 配置一个名为myInterceptor的拦截器栈 --> <interceptor-stack name="myInterceptor"> <!-- 将ScheduleInterceptor拦截器放入该栈中 --> <interceptor-ref name="ScheduleInterceptor"></interceptor-ref> <!-- 可以引用多个 --> </interceptor-stack> </interceptors>
此时只需要给Action配置该拦截器栈 该Action就能被栈中所有的拦截器拦截了
<action name="schedule" class="schedule"> <result name="success"></result> <!-- 配置系统的默认拦截器 --> <interceptor-ref name="defaultStack"></interceptor-ref> <!-- 应用myInterceptor拦截器栈 --> <interceptor-ref name="myInterceptor"> <param name="includeMethods">list</param> </interceptor-ref> </action>
标签:style blog class code c java
原文地址:http://www.cnblogs.com/mingf123/p/3733882.html