Struts2L6.拦截器nullby Fred Wangby Fred WangStruts2 Interceptors本次课程目标本次课程目标了解拦截器原理
了解Struts2拦截器
拦截器配置
自定义拦截器为什么需要拦截器为什么需要拦截器清理与业务无关的操作,封装,独立化
事前,事后
代码重用
可配置,更高层次解耦合拦截器的工作方式拦截器的工作方式通过动态调用,指定对应的拦截器和拦截的目标方法,在目标方法运行前后插入需要执行的代码Struts2的拦截器Struts2的拦截器Struts2使用ActionProxy,在Action被调用前,拦截并根...
nullby Fred Wangby Fred WangStruts2 Interceptors本次课程目标本次课程目标了解拦截器原理
了解Struts2拦截器
拦截器配置
自定义拦截器为什么需要拦截器为什么需要拦截器清理与业务无关的操作,封装,独立化
事前,事后
代码重用
可配置,更高层次解耦合拦截器的工作方式拦截器的工作方式通过动态调用,指定对应的拦截器和拦截的目标
,在目标方法运行前后插入需要执行的代码Struts2的拦截器Struts2的拦截器Struts2使用ActionProxy,在Action被调用前,拦截并根据配置运行多个拦截器
拦截器配置拦截器配置定义中传入默认参数:
value
堆栈:
...
堆栈中可以包含另一个堆栈的引用拦截器配置二拦截器配置二调用时动态传入参数:
在action定义中引用,为参数赋值
默认拦截器:
每一个包可以定义且只能定义一个
包中action如果没有显式定义拦截器,就使用默认,如果有,则运行定义的而不运行默认。修改拦截器栈內某拦截器的配置修改拦截器栈內某拦截器的配置引用堆栈时使用拦截器名.参数名作为参数名
value
实现拦截器类实现拦截器类实现Interceptor或者继承AbstractInterceptor
在intercept方法中,可以通过invocation.getAction()获得Action实例,做完拦截器自身业务后使用invocation.invoke()继续执行
开发完成后应定义并在action中配置执行拦截器方法过滤:拦截器方法过滤:继承MethodFilterInterceptor
重写doFilter(ActionInvocation invok)
有excludeMethods和includeMethods两个属性用于配置哪些方法拦截,哪些不拦截。如果同时配置拦截和不拦截,结果将拦截拦截器运行顺序拦截器运行顺序Action执行前按配置顺序
执行后按倒序拦截action结果拦截action结果定义监听器MyLisnr() implements PreResultListener实现beforeResult()方法
在拦截器中注册监听器invocation.addPreResultListener(new Mylisnr())
监听器中实现的beforeResult()将在拦截器得到result前执行
在beforeResult()中如果再次调用invoke()将进入死循环!常用拦截器-defaultStack常用拦截器-defaultStackException 处理所有的异常并找对应结果
Alias 不同请求之间相识参数别名的转换
Servlet-config Servlet API注入
Prepare 对实现Preparable接口的action调用prepare()
I18n 把所选的语言、区域放入session
Chain 构造action chain,配合result type=“chain”使用使action可以访问到前面action的属性,
Debugging 提供额外debug信息
Profiling 通过参数激活profile
Scoped-model-driven 当action实现ScopedModelDriven,它将在对应的scope中寻找model并放入action
Model-driven 当action实现ModelDriven,它将getModel()并放入ValueStack
fileUpload 文件上传时解析form中的内容
Checkbox添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox
Static-params 传入xml中所有param参数
Params 解析http请求参数并放入action实例:登录验证实例:登录验证Package com.fred.s2.interceptor;
Public class LoginInterceptor extends AbstractInterceptor{
public String intercept(ActionInvocationn ai) throws Exception{
User user=ai.getInvocationContext()
.getSession().get(“user”);
if(null!=user){
return invocation.invoke();
}else{
return Action.LOGIN;
}
}
}配置方法一:单独配置配置方法一:单独配置
...
/login.jsp
配置方法二:配置成默认stack配置方法二:配置成默认stack
本文档为【Struts2L6.拦截器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。