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;
            
        }
  • 相关阅读:
    FastAPI WebSockets
    FastAPI 进阶知识(五) 子应用
    FastAPI 基础学习(十五) 直接使用Request
    FastAPI 安全机制(四) OAuth2 scopes
    FastAPI 依赖注入系统(六) 可参数化的依赖项
    FastAPI Response(四) 高级定制的Response
    FastAPI Response(三) 定制化的Response
    FastAPI Response(二) 直接返回Response对象
    FastAPI 进阶知识(四) 后台任务
    python全栈开发目录
  • 原文地址:https://www.cnblogs.com/liyh123/p/6580649.html
Copyright © 2011-2022 走看看