【struts2】拦截器基础
1)拦截器是什么?
拦截器(Interceptor)是Struts2最强大的特性之一,它是一种可以让你在Action执行之前和Result执行之后进行一些功能处理的机制。来回顾一下官方给出的Struts2系统架构图中关于拦截器的部分,如下图所示:

这个图清晰的描述出了拦截器的运行地位,就是用来负责在Action执行之前和Result执行之后处理一些功能的类。也就是说,上图示意了有3个拦截器的类,分别是Interceptor1、Interceptor2和Interceptor3,它们分别执行不同的功能处理,而运行的时机就是在Action执行之前和Result执行之后。
2)拦截器的优点是什么?
拦截器能实现很多功能,这里先撇开具体功能不谈,从设计和程序结构上来看看,拦截器有些什么优点:
- 简化Action的实现
拦截器能把很多功能从Action中独立出来,大量减少了Action的代码。
- 功能更单一
按照上面的描述,把功能从Action中分离出来,分散到不同的拦截器里面,这样每个拦截器的功能,以及Action本身的功能都更单一了。
- 通用代码模块化
从Action中把功能分离出来,放到拦截器去实现,这样能把一些在多个Action中通用的代码进行模块化,封装在一个或几个拦截器里面。
- 提高重用性
当通用的功能代码被封装在拦截器里面,实现了代码模块化过后,就可以对不同的Action,根据功能需要,来配置相同的拦截器了。这大大提高了拦截器所实现的功能的重用性,还变相实现了装配式和可插拔式的体系结构,使得整个系统结构变得更灵活。
- 实现AOP
Struts2通过拦截器实现了AOP(面向切面编程),AOP是一种编程范式,它是一种分散实现关注功能的编程方法。拦截器将通用需求功能从不相关的Action之中分离出来,能够使得很多Action共享同一个行为,一旦行为发生变化,不必修改很多Action,只要修改这个行为就可以了。
备注:有web开发经验的朋友看到这里,一定会说,这不就类似于Filter么?过滤器也可以做这些事啊。没错,拦截器和Filter确实有相似之处,但是Interceptor相比于Filter具有更强大的功能,比如拦截器与Servlet的API无关,比如拦截器可以访问到值栈等等。
回忆一下,在前面的示例中,在运行Action的execute方法的时候,会发现Action的属性已经有值了,而且这些值跟用户请求中的参数值时一样的。这说明,在execute方法之前,有人偷偷的把用户请求中的参数值和Action的属性做了一个对应,并且把请求中的参数赋值到了Action的属性上,这个功能就是由缺省配置的拦截器来实现的。这些缺省配置的拦截器,称之为预定义的拦截器。我们还可以编写自己需要的拦截器类,称之为自定义拦截器,它的具体功能就根据需要,由我们自行实现了。
参考资料:http://www.iteye.com/topic/1124526
【struts2】拦截器基础的更多相关文章
- 基于SSH2框架Struts2拦截器的登录验证实现(转)
大象在这里假设你已经弄清楚了Struts2拦截器的基本概念,可以进入实际运用了.那么我们在之前的基础上只需要做下小小的改变,就可以使用Struts2的拦截器机制实现登录的验证. 修改数 ...
- Struts2拦截器原理以及实例
一.Struts2拦截器定义 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. ...
- Struts2拦截器登录验证
Struts2拦截器 Struts2拦截器的概念和Spring Mvc拦截器一样. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截 ...
- Struts2拦截器再认识
拦截器(Interceptor)是 Struts 2 的核心组成部分. Struts2 很多功能都是构建在拦截器基础之上的,例如文件的上传和下载.国际化.数据类型转换和数据校验等等. Struts2 ...
- struts2动态调用+Servlet过滤器+struts2拦截器
周末真的是懒到心慌...... 本文是在完整s2sh项目基础上添加的,不太了解s2sh项目构建的朋友可以先参考一下这几篇文章: eclipse环境下基于tomcat-7.0.82构建struts2项目 ...
- Struts2 拦截器配置以及实现
@(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...
- struts2 拦截器
拦截器:对Action的访问.可以拦截到Action中某个方法.与过滤器不同,过滤器过滤的是请求.过滤JSP.html.但是拦截器不能拦截jsp.html的访问. Struts2 拦截器在访问某个 A ...
- Struts2拦截器的使用 (详解)
Struts2拦截器的使用 (详解) 如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈default ...
- struts2拦截器
一.自定义拦截器 struts2拦截器类似于servlet过滤器 首先定义一个拦截器这个拦截器实现了Interceptor接口: package cn.orlion.interceptor; impo ...
- Struts2拦截器模拟
前言: 接触Struts2已经有一段时间,Student核心内容就是通过拦截器对接Action,实现View层的控制跳转.本文根据自身理解对Struts2进行一个Java实例的模拟,方便大家理解! 示 ...
随机推荐
- ASP入门(五)- VBScript过程和函数
VBScript过程 被封装在Sub和End Sub语句之中的一系列语句 不具有返回值 可带参数 我们的SubFunction.asp中展示了Sub的用法,代码如下: <% Sub mySub( ...
- [Canvas]RPG游戏雏形 (地图加载,英雄出现并移动)
源码请点此下载并用浏览器打开index.html观看 图例: 代码: <!DOCTYPE html> <html lang="utf-8"> <met ...
- eclipse启动错误:java.lang.NoClassDefFoundError: org/eclipse/core/resources/IContainer
转自:http://blog.csdn.net/niu_hao/article/details/9332521 eclipse启动时报错如下:java.lang.NoClassDefFoundErro ...
- ExtJS学习笔记2:响应事件、使用AJAX载入数据
响应事件: 1.设置一个html标记 <div id="my-div">Ext JS 4 Cookbook</div> 2.使用get函数获取此标记对象 v ...
- @SuppressLint("NewApi")和@TargetApi()的区别
在Android代码中,我们有时会使用比我们在AndroidManifest中设置的android:minSdkVersion版本更高的方法,此时编译器会提示警告, 解决方法是在方法上加上@Suppr ...
- Rust 的安装和使用举例
一.环境 二.安装 $curl -sSf https://static.rust-lang.org/rustup.sh | sh Welcome to Rust. This script will d ...
- mysql加减时间-函数-时间加减
select timediff('23:40:00', ' 18:30:00'); -- 两时间相减 SELECT substring( timediff(,) ----“:”相减返回小时:分钟 -- ...
- Maven的JAR包仓库,不用再百度搜JAR包了!
http://search.maven.org/ 今天初学Maven,发现Maven的中央仓库里差点儿什么jar都有...........还有各种版本号... 你值得拥有!
- Container [pid=6263,containerID=container_1494900155967_0001_02_000001] is running beyond virtual memory limits
以Spark-Client模式运行,Spark-Submit时出现了下面的错误: User: hadoop Name: Spark Pi Application Type: SPARK Applica ...
- 2721: [Violet 5]樱花|约数个数
先跪一发题目背景QAQ 显然x,y>n!,然后能够设y=n!+d 原式子能够化简成 x=n!2d+n! 那么解的个数也就是n!的因子个数,然后线性筛随便搞一搞 #include<cstdi ...