struts2拦截器

一、自定义拦截器

struts2拦截器类似于servlet过滤器

首先定义一个拦截器这个拦截器实现了Interceptor接口:

package cn.orlion.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class MyInterceptor implements Interceptor{

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void init() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        // TODO Auto-generated method stub
        long start = System.currentTimeMillis();
        String r = invocation.invoke();
        
        System.out.println("action time=" + (System.currentTimeMillis() - start));
        return r;
    }

}

这个过滤器在控制台打印出action运行的时间

在struts.xml中配置:

<package name="ognl" namespace="/" extends="struts-default">
    
        <interceptors>
            <interceptor name="my" class="cn.orlion.interceptor.MyInterceptor"></interceptor>
        </interceptors>
         <action name="ognl" class="cn.orlion.actions.OgnlAction">
             <result>
                 /ognl.jsp
             </result>
             <interceptor-ref name="my"></interceptor-ref>
             <interceptor-ref name="defaultStack"></interceptor-ref>
         </action>
         
     </package>

当访问ognl.action时就会在控制台打印出时间

2、应用token拦截器

struts2提供了一个token interceptor,用于防止表单重复提交,示例:

在表单jsp页面的form表单里添加<s:token></s:token>

在struts.xml中配置:

<action name="tag" class="cn.orlion.actions.TagAction">
             <result>
                 /tag.jsp
             </result>
             <result name="invalid.token">
                 /error.jsp
             </result>
             <interceptor-ref name="defaultStack"></interceptor-ref>
             <interceptor-ref name="my"></interceptor-ref>
         </action>
原文地址:https://www.cnblogs.com/orlion/p/5034293.html