在struts2如何实现拦截器和配置过程

来源:互联网 发布:视频广告过滤大师 mac 编辑:程序博客网 时间:2024/05/16 01:30
//在struts2如何实现拦截器    * 定义需求       * 如果用于已经登陆,可以访问action中的save()方法       * 如果用户没有登陆,则不能访问action中的save方法          模拟:session.setAttriute("user","user")           * 定义拦截器                /* * struts2中的拦截器是单实例运行 */@SuppressWarnings("serial")public class PerssionInterceptor implements Interceptor {public PerssionInterceptor(){System.out.println("PerssionInterceptor 拦截器的构造方法");}//初始化方法,在拦截器的声明周期中,该方法执行一次public void init() {       System.out.println("PerssionInterceptor init");}    /**     * 在拦截器的声明周期中,该方法执行多次     *   ActionInvocation: 代表一个给定动作的执行状态, 拦截器可以从该类的对象里获得与该动作相关联的 Action 对象和 Result 对象     *     * 由struts2创建,在运行时注入     */public String intercept(ActionInvocation invocation) throws Exception {//请求的UserAction对象System.out.println("invocation.getAction() "+invocation.getAction());//请求的UserAction对象的代理对象System.out.println("invocation.getProxy().getAction() "+invocation.getProxy().getAction());//访问的action中的方法  svaeSystem.out.println("invocation.getProxy().getMethod() "+invocation.getProxy().getMethod());//访问的action所在的命名空间 /aopSystem.out.println("invocation.getProxy().getNamespace() "+invocation.getProxy().getNamespace());//获取sessionMap sessionMap=invocation.getInvocationContext().getSession();//从session中获取user        Object user=sessionMap.get("user");//如果user==null         if(user==null){           //转到没有权限的页面            return "error";          } //真正调用action的save方法         String resultValue=invocation.invoke(); System.out.println("resultValue   "+resultValue);  return resultValue;}//销毁方法,在拦截器的声明周期中,该方法执行一次public void destroy() { System.out.println("PerssionInterceptor destroy");}}             * 让拦截器运行        * 在struts_aop.xml文件配置拦截器             <interceptors>            <!-- 声明自定义的拦截器 -->            <interceptor name="perssionInterceptor" class="cn.itcast.aop.PerssionInterceptor" />                      <!-- 定义新的拦截器栈 -->            <interceptor-stack name="perssionStack">                <!-- 引用默认栈-->                 <interceptor-ref name="defaultStack"/>                <!-- 增加自定义的拦截器 -->                <interceptor-ref name="perssionInterceptor"/>            </interceptor-stack>            </interceptors>                     <!--struts2执行时,真正要执行的拦截器栈-->            <default-interceptor-ref name="perssionStack"/>       * 测试运行

原创粉丝点击