• 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;
            
        }
  • 相关阅读:
    [2019南昌邀请赛网络赛D][dp]
    [ Educational Codeforces Round 65 (Rated for Div. 2)][二分]
    [hdoj5927][dfs]
    [cf1140D. Minimum Triangulation][dp]
    [hdoj6483][莫队+线段树/ST]
    使用GAC加速 解决CSP问题 Kakuro
    UVA 11427 Expect the Expected
    UVA 11021 Tribles
    UVA 11174 Stand in a Line 树上计数
    《算法概论》第八章的一些课后题目 关于NP-Complete Problem
  • 原文地址:https://www.cnblogs.com/liyh123/p/6580649.html
Copyright © 2020-2023  润新知