zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    【LeetCode每天一题】Pascal's Triangle(杨辉三角)
    【Redis】持久化
    【LeetCode每天一题】Swap Nodes in Pairs
    【LeetCode每天一题】Reverse String
    [bzoj2152]聪聪可可
    [bzoj3572][Hnoi2014]世界树
    Codeforces Round#409/VK-Cup 2017 Round2
    Educational Codeforces Round#19
    [bzoj4813][Cqoi2017]小Q的棋盘
    [bzoj4236]JOIOJI
  • 原文地址:https://www.cnblogs.com/orlion/p/5034293.html
Copyright © 2011-2022 走看看