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>