Struts2 拦截器 理解

原创 2011年01月19日 22:41:00

拦截器   理解 原理 作用 事例

 

对于任何 MVC框架来说,他们都会完成一些通用的控制逻辑:例如解析请求参数,类型转换,将请求参数封装成DTO,执行输入校验,解析文件上传表单中的文件域,防止表单多次提交……这些操作又不是所有Action都需要实现的,所以需要动态的方式来自由组合。Struts 2 的做法是,它把大部分核心控制器需要完成的工作按功能分开定义,每个拦截器完成一个功能。而这些拦截器可以自由选择,灵活组合,开发者需要使用哪些拦截器,只需要在 struts.xml 文件中指定使用该拦截器即可。

 

拦截器可以说相当于是个过滤器:就是把 不想要的或不想显示的内容给过滤掉。拦截器可以抽象出一部分代码可以用来完善原来的action。同时可以减轻代码冗余,提高重用率。

比如在登入一个页面时,如果要求用户密码、权限等的验证,就可以用自定义的拦截器进行密码验证和权限限制。对符合的登入者才跳转到正确页面。这样如果有新增权限的话,不用在action里修改任何代码,直接在interceptor里修改就行了。

 

拦截器提供了更高层次的解耦,目标代码无需手动调用目标方法,而是由系统完成,从而将这种调用从代码层次上升到更高层次,从而提供了更高层次的解耦。计算机本身是无法自动调用拦截器方法,它甚至无法知道到底是应该调用哪个拦截器。对Struts 2框架而言,程序通过配置文件来管理拦截器,从而让系统明白: 何时应该调用哪个拦截器。

 

  拦截器的用法非常灵活,Struts 2 允许将完成各种小功能的方法定义成小粒度的拦截器,如果有一些拦截器经常需要固定在一起使用,又可以将这批小粒度的拦截器定义成大粒度的拦截器栈。从结构上来看,拦截器栈相当于多个拦截器的组合;通过组合不同的拦截器,我们能以自己需要的方式来组合 Struts 2 框架的各种功能;通过扩展自己的拦截器,我们可以无限扩展 Struts 2 框架。因为拦截器是通过配置文件指定的,因此通过拦截器来引入通用操作的方式,完全是可插拔式的,当系统需要执行这些通用操作时,则配置文件引入这些拦截器即可;如果系统不需要执行这些通用操作,则在配置文件中取消引入即可。

 

相关文章推荐

简单理解Struts2中拦截器与过滤器的区别及执行顺序

当接收到一个httprequest ,  a) 当外部的httpservletrequest到来时  b) 初始到了servlet容器 传递给一个标准的过滤器链  c) FilterDispat...

Struts2 的 Preparable, ModelDriven 接口方法里无法获得参数,理解 拦截器与责任链

动作类实现了 Preparable,ModelDriven 这两个接口,

Struts2架构图解析以及拦截器的理解

我们希望了解Struts2的工作原理,那么我们通过几张图来看一下:   1 Struts2官方Struts2-Architecture     我们看到,Interceptor是相对与A...

Struts2 ---拦截器的理解

拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你在Action和result被执行之前或之后进行一些处理。同时,拦截器也可以让你将通用的...

简单理解Struts2中拦截器与过滤器的区别及执行顺序

当接收到一个httprequest ,  a) 当外部的httpservletrequest到来时  b) 初始到了servlet容器 传递给一个标准的过滤器链  c) FilterDispat...
  • yakoo5
  • yakoo5
  • 2013年05月23日 10:41
  • 7291

struts2 拦截器和过滤器理解

学习Struts2时,发现有过滤器和拦截器,他们貌似都是一样的功能,但是为什么会有2个不同的名称呢?肯定是有区别的,所以打算自己整理一下。            过滤器,是在java we...

简单理解Struts2中拦截器与过滤器的区别及执行顺序

当接收到一个httprequest ,  a) 当外部的httpservletrequest到来时  b) 初始到了servlet容器 传递给一个标准的过滤器链  c) FilterDispat...

struts2的自定义拦截器例子

  • 2016年12月30日 11:00
  • 3.55MB
  • 下载

struts2自定义拦截器配置心得

  • 2013年09月02日 17:38
  • 17KB
  • 下载

Struts2使用拦截器完成权限控制示例

示例需求:     要求用户登录,且必须为指定用户名才可以查看系统中某个视图资源;否则,系统直接转入登陆页面。  一、页面部分  1、登陆页面代码(login.jsp)  Java代码   ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2 拦截器 理解
举报原因:
原因补充:

(最多只允许输入30个字)