I.拦截器的作用:把多个Action中的冗余代码,抽取到拦截器中,解决代码冗余问题
Ii.a)编码implements Interceptor接口
b)配置
Iii.注意:
a)拦截响应
b)中断请求
c)拦截器只在本包中有效
d) 简化拦截器开发 继承AbstractInterceptor类
Iii.拦截器栈
作用:管理多个拦截器
使用:不编码,只需配置
Iv.默认拦截器栈
作用:可以指定一个拦截器栈为默认拦截器栈,可以拦截所有的目标Action
注意:默认拦截器栈放置的位置必须在全局跳转的前面,每个包中只能配置一个默认拦截器栈,局部配置优先
v.Struts2中的拦截器体系
a)自定义拦截器
b)默认拦截器(系统拦截器)了解
I.params 目的:接收客户端的请求参数
Ii.fileupload
Iii.Exception
Iv.workflow
。。。。。。。
C)默认拦截器放置的位置
Struts2-core.jar ---->Struts-default.xml
注意:如果自定义了默认拦截器栈,Struts2中的系统拦截器栈将失效
注意:如果自定义拦截器,系统拦截器将失效
d)方法拦截器
作用:在DMI中,如果使用者采用的是通配符的配置方式,可以通过方法拦截器,拦截对应的方法。
编码:extends MethodFilterInterceptor
配置:
注意:
总结:拦截器的开发步骤
拦截器的应用:
I.强制登陆
Ii.防止用户重复提交
发生场景:在用户进行表单提交时,因为网络通信等问题,产生重复的表单提交
解决方案:令牌环
令牌环的实现原理:
Struts2令牌环解决思路
1.客户端生成随机数
<s:token></s:token>
2.配置token拦截器
3.提供跳转目标页面