struts2拦截器

struts2的拦截机制

拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你 在Action和result被执行之前或之后进行一些处理。同时,拦截器也可以让你将通用的代码模块化并作为可重 用的类。Struts2中的很多特性都是由拦截器来完成的。拦截器是AOP(面向切面编程,在特定的切面做处 理)的一种实现。 拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。拦截器链就是将拦截器按 一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序 被调用.

struts2拦截器的作用

1、struts2的绝大部分功能都是通过拦截器来完成的。它默认启用大量通用功能的拦截器,只要配置 action所在的package继承了struts-default包,这些拦截器就会起作用。 

2、struts2拦截器将需要完成的工作按功能分开定义,这些拦截器可以自由选择,灵活组合,自行定 义,只需要在struts.xml文件中配置即可。 

3、基于以上两点,struts2拦截器可以减轻代码冗余,提供重用率 

4、struts2自定义拦截器通常用于登录和权限验证

struts2拦截器的配置

1、创建一个拦截器类 Interceptor 它其中有三个方法 Init()方法:在服务器起动的时候加载一次,并且只加载一次; Destroy()方法:当拦截器销毁时执行的方法; Intercept()方法:其中里边有一个参数invocation 具体配置如下:

a、此类要求继承AbstractInterceptor

b、此类实现父类的intercept方法 

c、通过调用invoke方法继续执行下一个拦截器或是当前被拦截的url调用的action方法 

d、return的字符串对应struts配置文件中result标签的name属性值,所以此处通过字符串寻找对应的 result标签做跳转 

2、 在struts配置文件中进行配置:

a、标签写在package标签内,struts2拦截器的配置都写在标签对中 

b、interceptor声明了自定义拦截器:其中name属性对应自定义拦截器的名字,自行定义,见名识意即 可 ;class属性对应“1”中创建的拦截器类的路径,包名.类名的形式。 

c、interceptor-stack是所谓的拦截器链,或者可以叫做拦截器栈。name属性自行定义 

d、interceptor-ref标签声明当前拦截器栈所包含的拦截器,name属性指向已经声明过的拦截器,包括 自定义拦截器和struts2默认提供拦截器 如上:“d”中通过name属性“myInter”指向的是“b”这个自定义拦截器 e、“defaultStack”:struts2默认拦截器的名字

注:struts2拦截器是通过调拦截器栈来使用,所以拦截器栈中一定要包含struts2默认拦截器,除非项目 中不需要使用struts2默认拦截器

struts2拦截器的使用

1、将拦截器应用于同一个package下的某一个action中:在action标签中通过interceptor-ref标签的 name属性指向需要调用的拦截器栈 如: 

此时拦截器使用范围:拦截器只拦截当前action类中的访问路径,并且拦截器中返回的字符串对应值范围 只在此action标签对内 

2、将拦截器应用于一个package中:

a、在拦截器所在的package标签中通过”default-interceptor-ref“标签,声明默认拦截器栈 

b、通过”global-results“标签定义全局

c、需要使用此拦截器的package标签继承拦截器的package的name属性,不需要拦截的则不继承即 可。如:登陆路径则不需要继承验证是否登陆的拦截器

总结

1、创建interceptor类 

2、在struts配置文件中配置拦截器 

3、通过配置使用拦截器 

4、验证拦截器效果

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值