zoukankan      html  css  js  c++  java
  • Struts2拦截器

    Struts拦截器 interceptor与过滤器filter的不同

    interceptor:对action进行拦截的,是Struts工具。 

    filter:是对所有的东西进行过滤。.css  .js   .jpg

    一、拦截器配置

    第一步:创建一个类,继承自AbstractInterceptor

    第二步:配置struts.xml
    1.添加<interceptors>配置节,添加拦截器配置。

    <interceptors>
            <!-- name是自定义用在ref的name,class是第一步创建的累的完全限定名 -->
            <interceptor name="loginlan" class="com.itnba.maya.util.LoginInterceptor"></interceptor>
            <interceptor name="mylan" class="com.itnba.maya.util.Interceptor"></interceptor>
                     <!-- stack是好多interceptor放在一起用 -->
                       <interceptor-stack name="newstack">
                           <interceptor-ref name="loginlan"></interceptor-ref>
                           <interceptor-ref name="mylan"></interceptor-ref>
                           <interceptor-ref name="defaultStack"></interceptor-ref>
                       </interceptor-stack>
    </interceptors>

    2.在action中引用,<interceptors>中的配置。

    <action name="*_*" class="com.itnba.maya.controller.{1}Action" method="{2}">
                <!-- 在action中引用interceptor,符合这个格式通配符的页面就会执行引用的拦截器 -->
                <interceptor-ref name="newstack"></interceptor-ref>
                <result name="success">
                   {1}/{2}.jsp
                </result>
            </action>


    注意:
    1.在action中需要添加defaultStack引用
    2.在建<interceptors>可以建立stack,把defaultStack也添加在里面,在引用的时候引用此stack即可,如:第一步中的stack中的

    <interceptor-ref name="defaultStack"></interceptor-ref>。

    二、在拦截器中使用内置对象。
    1.ActionContext 获取Map:session = ActionContext.getContext().getSession();

    public class LoginInterceptor extends AbstractInterceptor{
        private Map<String,Object> session;
        @Override
        public String intercept(ActionInvocation arg0) throws Exception {
            session = ActionContext.getContext().getSession();
            if(session.get("user") == null){
                return "nologin";
            }
             
            return arg0.invoke();
        }
    }

    2.ServletActionContext 获取HttpSession
    3.实现SessionAware接口:implements SessionAware

    public class LoginAction extends ActionSupport implements ModelDriven<User>,SessionAware {
        private Map<String,Object> session = new HashMap<String,Object>();
        private User user = new User();
        
        public String login(){
            
            return SUCCESS;
        }
        public String yanzheng(){
            List<String> list = new ArrayList<String>(); 
            list.add("admin");
            list.add("lihaha");
            Object obj = session.get("user");
            if(obj == null){
                if(list.contains(user.getUsername())){
                    session.put("user", user.getUsername());
                    return SUCCESS;
                }
                else{
                    return "nologin";
                }
            }
            else{
                return SUCCESS;
            }
            
            
        }
        @Override
        public User getModel() {
            // TODO 自动生成的方法存根
            return user;
        }
        @Override
        public void setSession(Map<String, Object> arg0) {
            this.session= arg0;
            
        }
  • 相关阅读:
    leetcode 279. Perfect Squares
    leetcode 546. Remove Boxes
    leetcode 312. Burst Balloons
    leetcode 160. Intersection of Two Linked Lists
    leetcode 55. Jump Game
    剑指offer 滑动窗口的最大值
    剑指offer 剪绳子
    剑指offer 字符流中第一个不重复的字符
    leetcode 673. Number of Longest Increasing Subsequence
    leetcode 75. Sort Colors (荷兰三色旗问题)
  • 原文地址:https://www.cnblogs.com/liyh123/p/6580649.html
Copyright © 2011-2022 走看看