struts2笔记之拦截器的定义声明引用和其生命周期到Struts主要执行流程
来源:互联网 发布:excel2010如何编程 编辑:程序博客网 时间:2024/06/05 02:25
拦截器:拦截器类似于过滤器的功能,过滤器可以过滤项目的任何请求(servlet/jsp/html/img),拦截器只能拦截Action请求。定义拦截器interceptor :实现Interceptor接口 实现必须的三个方法 init() :拦截器初始化 服务器启动时候就初始化所有需要的拦截器 intercept(ActionInvocation invocation):拦截 action访问的时候执行 destroy():销毁服务器停止的时候销毁申明和使用拦截器:<package name="inter" extends="struts-default" namespace="/inter"> <!-- 申明拦截器:拦截器在此申明后,在web服务器启动的时候就会被初始化 --> <interceptors> <interceptor name="inter1" class="com.example.MyInterceptor1"></interceptor> </interceptors> <action name="user_*" class="com.example.UserAction" method="{1}"> <!-- 申明该action使用该拦截器:使用后,访问该action的请求,会先经过拦截器 --> <interceptor-ref name="inter1"></interceptor-ref> <result>/index.jsp</result> </action> </package>
拦截器生命周期: 1.启动服务器时候,申明在配置文件的拦截器,被初始化,调用init方法 2.当有请求访问拦截器作用的action时,先创建action对象, 3.执行该拦截器的intercepot方法拦截。在action目标方法 invocation.invoke()执行前后,写相应的业务逻辑。 4.当服务器停止时,拦截器对象才被销毁
拦截器作用范围:1.局部使用:在action内部使用,只作用于该action<action name="user_*" class="com.example.UserAction" method="{1}"> <!-- 使用拦截器 --> <interceptor-ref name="inter1"></interceptor-ref> <result>/index.jsp</result></action>
2.全局使用: 当package内,action外使用 作用于package内的所有action<package name="inter" extends="struts-default" namespace="/inter"> <!-- 申明拦截器 --> <interceptors> <interceptor name="inter1" class="com.example.MyInterceptor1"></interceptor> </interceptors> <!-- 使用截器 --> <default-interceptor-ref name="inter1"></default-interceptor-ref></package>
拦截器栈interceptor-stack:包含多个已经申明的拦截器。拦截器和拦截器栈都在interceptors标签内申明定义拦截器栈的时候,引用拦截器的顺序决定了创建拦截器对象的顺序。(先指定就先创建)<interceptors> <interceptor name="inter1" class="com.example.MyInterceptor1"></interceptor> <interceptor name="inter2" class="com.exampler.MyInterceptor2"></interceptor> <!-- 定义栏截器栈 --> <interceptor-stack name="interStack"> <interceptor-ref name="inter1"></interceptor-ref> <interceptor-ref name="inter2"></interceptor-ref> </interceptor-stack></interceptors>
拦截器栈中拦截器的执行顺序:1.创建拦截器inter1对象,调用init方法2.创建拦截器inter2对象,调用init方法3.执行inter1的interceptor方法前面代码4.执行inter2的interceptor方法前面代码5.Action的业务方法6.执行inter2的interceptor方法后面代码7.执行inter1的interceptor方法前面代码注意:当我们的包下引用了自定义拦截器栈,则会把默认包下的default-stack拦截器给覆盖掉 为了不覆盖默认拦截器,所以自定义的拦截器栈要加入Struts2默认的拦截器栈:<interceptor-stack name="myStack"><interceptor-ref name="defaultStack"></interceptor-ref><!-- 引入了默认的18个拦截器 --><interceptor-ref name="interStack"></interceptor-ref><!-- 引入自定义的2个拦截器 --></interceptor-stack>
struts2的主要初始化流程:1.创建StrutsPrepareAndExcuteFilter对象,执行init方法2.加载default.properties配置文件 3.加载struts-default.xml struts-plug.xml struts.xml配置文件4.初始化Struts默认配置的拦截器和自定义的拦截器,调用init方法
struts2的处理请求的主要流程:如果请求目标是action ,Struts2框架拦截器才会处理,WebRoot下的静态资源是不会经过拦截器的。1.依次执行对目标action起作用的拦截器的 intercept(ActionInvocation invocation)方法2.调用actionInvocation .invocation()方法放行3.创建目标action对象,调用目标方法,目标方法返回配置文件result需要的字符串标记,4.根据目标方法返回的标记,跳到下一个action或者直接返回给浏览器result视图
阅读全文
0 0
- struts2笔记之拦截器的定义声明引用和其生命周期到Struts主要执行流程
- Struts2学习---拦截器+struts的工作流程+struts声明式异常处理
- Struts执行流程和拦截器之美
- struts2的执行原理(执行流程,过滤器和拦截器)
- 【Struts】拦截器的执行流程
- struts拦截器执行流程
- struts2笔记 之Struts的配置和其配置文件基本语法
- struts 拦截器入门&执行流程
- struts自定义拦截器及其执行流程
- 拦截器的概述和struts2的执行流程(十)
- struts2执行流程与拦截器介绍
- Struts2 学习笔记——struts.xml文件之拦截器的配置
- struts之四 struts的执行流程
- struts的开发流程和执行流程
- struts2之自定义拦截器及拦截器生命周期分析
- 拦截器概述和Struts2的运行流程
- struts2的请求流程,过滤器和拦截器区别
- Spring拦截器和异常处理的执行流程
- oracle 关于锁和v$lock的分析
- c# WPF 代码添加右键菜单
- Visual Studio 2017开发环境的安装
- eclipse调用caffe后py-faster-rcnn出现的问题几解决方法(cuda8.0+cudnn.V5 )
- Redhat7.2安装docker
- struts2笔记之拦截器的定义声明引用和其生命周期到Struts主要执行流程
- 垃圾收集机制
- java 整合Geohash 算法计算最近店面位置
- html img标签的使用
- 细说ASP.NET Forms身份认证
- NYOJ E. zb的生日
- 利用RBAC模型实现一个通用的权限管理系统
- 每天一道LeetCode-----将m × n矩阵按照顺时针螺旋顺序转化成一维数组
- lua库之注册C语言函数