2 Star 6 Fork 5

AmCoder / AmCoder

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
拦截器.md 1.63 KB
一键复制 编辑 原始数据 按行查看 历史
AmCoder 提交于 2020-05-30 10:25 . 第一次提交
  • struts2的执行过程

    当浏览器访问action的时候,会被前端控制器拦截住执行dofilter方法,在dofilter方法中会判断访问的是否是action,如果不是,放行,如果是,会往struts2的核心程序里面走,在核心程序中,会创建action的代理对象,但是这个代理对象并不是真正干活的对象,因为在它里面又调用了一个别的对象的方法invocation.invoke(),这个方法会获取所有的默认拦截器,一个一个的递归判断执行,当执行完毕所有的默认拦截器,才会执行自己的action方法,action执行完毕会返回一个逻辑视图名给配置文件,配置文件接收到指定的逻辑视图名会走指定的页面

  • 自定义拦截器

    1. 需要创建一个拦截器(javabean)
    • 实现Interceptor或者继承AbstractInterceptor
    1. 在配置文件(struts.xml,模板在struts-default.xml文件)中需要声明这个创建好的拦截器
    • 注意,如果针对全局的action配置了默认调用自己的拦截器,那么同时也需要配置系统的拦截器
    1. 定义一个拦截器组,在这个组中可以放1或者多个拦截器(组和组可以互相调用,而且拦截器可以出现在多个组中)
    • 无论是实现Interceptor或者继承AbstractInterceptor,都是针对一整个action,无法针对具体到action中的某个方法。如果需要针对action的某个方法进行拦截或者不拦截需要
      • 继承MethodFilterInterceptro(特点是,如果没有指定某个方法,默认是拦截action的所有方法)
      • 配置struts.xml<param name="excludeMethods">不拦截的方法名称</param>
其他
1
https://gitee.com/AmCoder/AmCoder.git
git@gitee.com:AmCoder/AmCoder.git
AmCoder
AmCoder
AmCoder
master

搜索帮助