Struts——自定义拦截器
设置全局的异常
自定义拦截器
public class LoginInterceptor extends MethodFilterInterceptor { // 为什么要继承这个类,因为他有一个除了...不拦截 protected String doIntercept(ActionInvocation actionInvocation) throws Exception { // 前处理 System.out.println("前处理"); // 放行 actionInvocation.invoke(); // 后处理 System.out.println("后处理"); return null; } }
interceptor配置文件
<interceptors> <!-- 1.注册拦截器 --> <interceptor name="loginInterceptor" class="cn.x5456.web.interceptor.LoginInterceptor"></interceptor> <!-- 2.注册拦截器栈 --> <interceptor-stack name="myStack"> <!-- 给我们的拦截器栈起个名字 --> <interceptor-ref name="loginInterceptor"> <!-- 指定哪些方法不拦截 --> <param name="excludeMethods">login</param> <!-- 指定哪些方法需要拦截 --> <!--<param name="includeMethods">login</param>--> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> <!-- 将官方栈放入我们的栈中 --> </interceptor-stack> </interceptors> <!-- 3.指定包中的默认拦截器栈 --> <default-interceptor-ref name="myStack"></default-interceptor-ref>
单独为某个action设置指定的拦截器
<action name="Demo1Action_*" class="cn.itcast.a_interceptor.Demo1Action" method="{1}" > <!-- 为Action单独指定走哪个拦截器(栈) <interceptor-ref name="myStack"></interceptor-ref>--> <result name="success" type="dispatcher" >/index.jsp</result> </action>
注:拦截器无法拦截直接访问jsp,htm等页面
定义全局结果集
判断父界面是否在框架中,不在的话跳转到login.jsp