首页 > 代码库 > Struts2 拦截器
Struts2 拦截器
编写一个拦截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>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。