struts2拦截器

    xiaoxiao2022-06-23  24

    struts2   拦截器只能拦截action , jsp是没法拦截的 ,  要拦截接jsp  的话需要用filter 

    接下来对struts  拦截器说名:

    之前拦截

        例子:  对方法拦截

         需要继承MethodFilterInterceptor

    public class LanJieQi extends  MethodFilterInterceptor {     @Override     protected String doIntercept(ActionInvocation invocation) throws Exception {         //得到request           HttpServletRequest   request   = ServletActionContext.getRequest();           //设置编码           request.setCharacterEncoding("gbk");           //得到页面  name  的值           String name =request.getParameter("name");           System.out.println(name);           //进入下一个拦截器           return invocation.invoke();     } }

     struts.xml   配置

      <interceptors>         <interceptor name="lanjieqi" class="com.action.LanJieQi">         </interceptor>       </interceptors>       <action name="login" class="com.action.LoginAction">        <interceptor-ref name="lanjieqi">                <param name="includeMethods">login</param>            </interceptor-ref>            <interceptor-ref name="defaultStack"></interceptor-ref>          <result name="success">/success.jsp</result>           <result name="fail">/index.jsp</result>       </action>

    1需要注意的是<interceptors>  必须写在<package>所以action  之前 , 不然会报错  

    2还有必须把        <interceptor-ref name="defaultStack"></interceptor-ref>  加上

     3 .<param name="includeMethods">login</param>  name 有两个参数  1.   includeMethods  包含的   所以action 拦截   2. excludeMethods不包含的action  不拦截

    之后拦截:

       只需要修改

    public class LanJieQi extends  MethodFilterInterceptor {     @Override     protected String doIntercept(ActionInvocation invocation) throws Exception {

              //拦截器之前

              String    s= invocation.invoke()

              //拦截器之后

            //得到request           HttpServletRequest   request   = ServletActionContext.getRequest();           //设置编码           request.setCharacterEncoding("gbk");           //得到页面  name  的值           String name =request.getParameter("name");           System.out.println(name);           //进入下一个拦截器           return  s;     } }

     

              

              

    转载请注明原文地址: https://ju.6miu.com/read-1123342.html

    最新回复(0)