Strut2拦截器详细配置

    xiaoxiao2022-07-13  157

    1.声明一个类继承拦截器接口,或者实现拦截器接口 如下:

    extends AbstractInterceptor

    extends MethodFilterInterceptor

    implements Interceptor

    MethodFilterInterceptor    extends      AbstractInterceptor   implements     Interceptor

    1声明拦截器-1    extends MethodFilterInterceptor

    package com.baizhi.zcn.interceptor; import org.apache.struts2.ServletActionContext; import com.baizhi.zcn.entity.Admin; import com.baizhi.zcn.entity.User; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.interceptor.Interceptor; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; public class TestInterceptor extends MethodFilterInterceptor{ @Override protected String doIntercept(ActionInvocation invocation) throws Exception { Admin admin = (Admin) ServletActionContext.getRequest().getSession().getAttribute("admin"); System.out.println("=====拦截器======admin:"+admin); if(admin==null){ //用户不存在,没有登录,跳转到登录页面 return "adminLogin"; }else{ //判断是否激活,如果没激活到激活页面 //激活,放行 invocation.invoke(); } return null; } }

    1声明拦截器-2     extends AbstractInterceptor

    package com.baizhi.zcn.interceptor; import org.apache.struts2.ServletActionContext; import com.baizhi.zcn.entity.User; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.interceptor.Interceptor; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; public class UserInterceptor extends AbstractInterceptor{ @Override public String intercept(ActionInvocation invocation) throws Exception { User user = (User) ServletActionContext.getRequest().getSession().getAttribute("userLogin"); System.out.println("=====拦截器======user:"+user); if(user==null){ //用户不存在,没有登录,跳转到登录页面 return "userLogin"; }else{ //判断是否激活,如果没激活到激活页面 //激活,放行 invocation.invoke(); } return null; } }

    2.配置拦截器-1

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "struts-2.3.dtd" > <struts> <package name="address" extends="struts-default" namespace="/address"> <!-- 配置拦截器 --> <interceptors> <!-- 配置拦截器 name=拦截器起的名称,可以随便写;class=配置拦截器类的全限定名 --> <!--具体的name和class必须写,指定这个拦截器的位置和名称方便下面调用--> <interceptor name="userInterceptor" class="com.baizhi.zcn.interceptor.UserInterceptor"></interceptor> <!-- 配置拦截器栈 name=拦截器栈名,可以随便起--> <interceptor-stack name="myUserStack"> <!-- 这个是系统默认的Stack,如果你只调用上面自己写的Stack,则会只执行login拦截器的方法,很多地方会发生错误接收不到值--> <interceptor-ref name="defaultStack"></interceptor-ref> <!-- 定义拦截器栈包含userInterceptor拦截器 --> <interceptor-ref name="userInterceptor"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 全局配置错误页面跳转 --> <!--这个是公共类,所有的action都会走这个results --> <global-results> <!-- 当返回LoginError视图名时,转入/login.jsp页面 --> <result name="LoginError">/logi.jsp</result> </global-results> <action name="*" class="com.baizhi.zcn.action.AddressAction" method="{1}"> <!-- 使用拦截器 name=拦截器栈名 --> <interceptor-ref name="myUserStack"/> <!-- 前台: 查询 --> <result name="queryAll" >/queryAll.jsp</result> </action> </package> </struts>

    2.配置拦截器-1

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "struts-2.3.dtd" > <struts> <package name="address" extends="struts-default" namespace="/address"> <!-- 配置拦截器 --> <interceptors> <!-- 配置拦截器 name=拦截器起的名称,可以随便写;class=配置拦截器类的全限定名 --> <!--具体的name和class必须写,指定这个拦截器的位置和名称方便下面调用--> <interceptor name="userInterceptor" class="com.baizhi.zcn.interceptor.UserInterceptor"> <!-- 指定需要拦截的方法可以用,拼接(queryAll,queryById)--> <!-- name= excludeMethods(排除哪些方法) includeMethods(包含哪些方法) --> <param name="includeMethods" >queryAll,queryById</param> </interceptor> <!-- 配置拦截器栈 name=拦截器栈名,可以随便起--> <interceptor-stack name="myUserStack"> <!-- 这个是系统默认的Stack,如果你只调用上面自己写的Stack,则会只执行login拦截器的方法,很多地方会发生错误接收不到值--> <interceptor-ref name="defaultStack"></interceptor-ref> <!-- 定义拦截器栈包含userInterceptor拦截器 --> <interceptor-ref name="userInterceptor"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 全局配置错误页面跳转 --> <!--这个是公共类,所有的action都会走这个results --> <global-results> <!-- 当返回userLogin视图名时,转入/login.jsp页面 --> <result name="userLogin">/front/user/login_form.jsp</result> </global-results> <action name="*" class="com.baizhi.zcn.action.AddressAction" method="{1}"> <!-- 使用拦截器 name=拦截器栈名 --> <interceptor-ref name="myUserStack"/> <!-- 前台: 查询 --> <result name="queryAll" >/queryAll.jsp</result> <!-- 前台: 查询 --> <result name="queryById" >/queryById.jsp</result> </action> </package> </struts>

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    最新回复(0)