• 做拦截器的两个步骤


    from: 成长之路 http://xugw.blog.sohu.com/124311370.html

    做拦截器的两个步骤

    1.写一个自己的拦截器
    public class PrivilegeCheckInterceptor extends AbstractInterceptor {
            //实现拦截器接口
     public String intercept(ActionInvocation invocation) throws Exception {
               System.out.println("PrivilegeCheckInterceptor");
         return invocation.invoke();
        }
    }
    2.配置全局的拦截器(struts.xml)
      <struts>
     <package name="default" extends="struts-default">
     <interceptors>
     <interceptor name="myinterceptor" class="test.interceptor.PrivilegeCheckInterceptor" />
     <interceptor-stack name="mystack">
     <interceptor-ref name="myinterceptor" />
     <interceptor-ref name="defaultStack" />
     </interceptor-stack>
     </interceptors>
     
     <default-interceptor-ref name="mystack" />
     
     <action name="users1"
     class="test.action.UserManagementAction">
     <result name="input">/index.jsp</result>
     <result name="success">/success.jsp</result>
     </action>
     
     </package>
    </struts>
    这样配置后所有在package之内定义的Action,都将被PrivilegeCheckInterceptor 拦截
    注解的方式(annotation)也可以配置拦截器,但是全局的拦截器还是要用struts.xml配置
    注意:拦截的配置应该放在action的前面
    问题:convention和拦截器(全局)的配合问题。convention是零配置的,而拦截器是要在struts.xml中定义的,
          如何为所有的action指定一个全局的拦截器呢?(这个问题好,我找了好久才找到这个解答)
    解决:利用struts2的package继承关系,ParentPackage的拦截器会被ChildPackage所继承。
          在struts.xml中定义好拦截器
          在struts.properties中加入
          struts.convention.default.parent.package=default
          注意这个包名(default)要和struts.xml中的包名一致
          <package name="default" extends="struts-default">
          也可以在Action中用@ParentPackage("default")的方式指定父包的名称
    问题: 如何获得被截取的方法名
    解决: 利用拦截器的对象ActionInvocation 
            ActionProxy proxy = actionInvocation.getProxy(); 
            proxy.getMethod(); 
  • 相关阅读:
    高效编写微信小程序
    故事怎么讲才有逼格?
    基于RESTful API 怎么设计用户权限控制?
    【开源访谈】腾讯贺嘉:从小程序谈起,开发者该如何跟进新技术?
    图标字体设计
    微信小程序即将上线,创业者机会在哪里?
    微信小程序开发学习资料
    PC 微信扫码登陆
    一张二维码同时集成微信、支付宝支付
    支付宝Wap支付你了解多少?
  • 原文地址:https://www.cnblogs.com/huqingyu/p/1637310.html
Copyright © 2020-2023  润新知