struts2的拦截器

拦截器 的使用 ,源自Spring AOP(面向切面编程)思想 
拦截器 采用 责任链 模式 
*  在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。
    *  责任链每一个节点,都可以继续调用下一个节点,也可以阻止流程继续执行 

在struts2 中可以定义很多个拦截器,将多个拦截器按照特定顺序 组成拦截器栈 (顺序调用 栈中的每一个拦截器 )




1、 struts2 所有拦截器 都必须实现 Interceptor 接口 
2、 AbstractInterceptor 类实现了 Interceptor 接口. 并为 init, destroy 提供了一个空白的实现


所有实际开发中,自定义拦截器 只需要 继承 AbstractInterceptor类, 提供 intercept 方法实现 


3、 常用struts2 拦截器
<interceptor-ref name="modelDriven"/> 模型驱动
<interceptor-ref name="fileUpload"/> 文件上传
<interceptor-ref name="params"> 参数解析封装 
<interceptor-ref name="conversionError"/> 类型转换错误
<interceptor-ref name="validation"> 请求参数校验
<interceptor-ref name="workflow"> 拦截跳转 input 视图



自定义拦截器:

1.创建一个类,实现Interceptor接口或继承 AbstractInterceptor
注意:要想让拦截器继续向下执行需要通过 ActionInvocation调用它的invoke方法.

2.在struts.xml文件中针对特定的action进行配置.

在<package>下可以通过
<interceptors>来对自己的拦截器进行配置
例如:
<interceptors>
<interceptor name="privilege" class="cn.itcast.utils.PrivilegeInterceptor"></interceptor>
</interceptors>

可以在action中通过
<interceptor-ref name="privilege"/>
来引用你配置的拦截器.

注意:如果在一个action中显示的配置了一个拦截器,那么我们所使用的默认的拦截器栈default-Stack就会失效。




<interceptor-stack>它用于配置一个拦截器栈。




注意事项总结:
1.让拦截器可以向下执行  ActionInvocation.invoke();
2.拦截器配置注意事项:如果显示的配置了一个拦截器,那么默认使用的defaultStack失效,需要手动在配置一下。
3.如果要针对action中某个方法拦截可以使用MethodFilterInterceptro来操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值