zoukankan      html  css  js  c++  java
  • struts2

    1.在不修改action源码的基础上,对action进行增强,AOP的思想。

    2.自定义拦截器

    单例

    (1)方式一:实现Interceptor接口

    (2)方式二:继承AbstractInterceptor抽象类【常用】

    定义拦截器类

    在struts.xml中声明拦截器

    使用拦截器

     

      如果在拦截器中没有调用invoke方法,而是直接返回一个字符串,那么会依据拦截器返回值直接匹配结果视图。如果调用了invoke方法,则拦截器的返回值没有意义。

    
    
    

      拦截器1 interception.invoke();  ->进入:拦截器2 ->拦截器3...->action ->结果视图

     拦截器1 return "";直接返回字符串-->结果视图

     多个拦截器执行顺序:

    配置自定义拦截器:

        <!--拦截器-->
        <package name="my-default" extends="struts-default" abstract="true">
            <interceptors>
                <interceptor name="loginInterceptor" class="cn.getword.interceptor.LoginInterceptor" />
                <interceptor-stack name="my_intercept_stack">
                    <interceptor-ref name="loginInterceptor" />
                    <interceptor-ref name="defaultStack" />
                </interceptor-stack>
            </interceptors>
    
            <default-interceptor-ref name="my_intercept_stack" />
    
            <global-results>
                <result name="login" type="redirect">/login2</result>
            </global-results>
        </package>
        <package name="user" extends="json-default,my-default" namespace="/user">
        </package>
    View Code

    拦截器:

    public class LoginInterceptor extends AbstractInterceptor {
        @Override
        public String intercept(ActionInvocation invocation) throws Exception {
            ActionContext context = invocation.getInvocationContext();
            HttpServletRequest request = (HttpServletRequest)context.get("com.opensymphony.xwork2.dispatcher.HttpServletRequest");
            HttpSession session = request.getSession();
            Object user = session.getAttribute("user");
            if(user == null){  //没有登录直接返回登录页面
                return "login";
            }
            //拦截器的放行
            return invocation.invoke();
        }
    }
    View Code

    end

  • 相关阅读:
    json作为参数传入函数
    js 获取input type="file" 选择的文件大小、文件名称、上次修改时间、类型等信息
    jquery 如何控制滚动条每次向下滚动300px
    [if lt IE 9]
    JS代码判断IE6,IE7,IE8,IE9!
    ios __block typeof 编译错误解决
    ios json结构
    iOS --创建文件夹 ,删除文件夹
    iOS --生产JSON格式,创建JSON文件,创建文件夹,指定储存
    转载 -- iOS开发之JSON格式数据的生成与解析
  • 原文地址:https://www.cnblogs.com/zhuxiang1633/p/9722776.html
Copyright © 2011-2022 走看看