2. 拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。
Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的 拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器
Struts2规定用户自定义拦截器必须实现com.opensymphony.xwork2.interceptor.Interceptor接口。该接口声明了3个方法,
void init();
void destroy();
String intercept(ActionInvocation invocation) throws Exception;
intercept方法就是拦截的主体了,每次拦截器生效时都会执行其中的逻辑。
public abstract class AbstractInterceptor implements Interceptor;
public abstract class MethodFilterInterceptor extends AbstractInterceptor;
其中AbstractInterceptor提供了init()和destroy()的空实现,使用时只需要覆盖intercept()方法;
一般来说,拦截器的写法都差不多。看下面的示例:
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class MyInterceptor implements Interceptor {
public void destroy() {
// TODO Auto-generated method stub
}
public void init() {
// TODO Auto-generated method stub
}
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("Action执行前插入 代码");
//执行目标方法 (调用下一个拦截器, 或执行Action)
final String res = invocation.invoke();
System.out.println("Action执行后插入 代码");
return res;
}
}
Struts2拦截器需要在struts.xml中声明,如下struts.xml配置文件
/span>
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"
http://struts.apache.org/dtds/struts-2.0.dtd">
/index.jsp
/success.jsp
名字
Alias Interceptor
在不同请求之间将请求参数在不同名字件转换,请求内容不变
chain
Checkbox Interceptor
添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox。
cookies
Conversion Error Interceptor
将错误从ActionContext中添加到Action的属性字段中。
createSession
Debugging Interceptor
提供不同的调试用的页面来展现内部的数据状况。
execAndWait
Exception Interceptor
将异常定位到一个画面
fileUpload
I18n Interceptor
记录用户选择的locale
logger
Message Store Interceptor
存储或者访问实现ValidationAware接口的Action类出现的消息,错误,字段错误等。
model-driven
Scoped Model Driven
如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法将其放入Action内部。
params
Prepare Interceptor
如果Acton实现了Preparable,则该拦截器调用Action类的prepare方法。
scope
Servlet Config Interceptor
提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问。
staticParams
Roles Interceptor
确定用户是否具有JAAS指定的Role,否则不予执行。
timer
Token Interceptor
通过Token来避免双击
tokenSession
Validation Interceptor
使用action-validation.xml文件中定义的内容校验提交的数据。
workflow
Parameter Filter Interceptor
从参数列表中删除不必要的参数
profiling
分享到:
相关推荐
`Struts2Day2_intercepter`指的是Struts2的核心特性之一——拦截器。拦截器是Struts2处理请求的一种机制,它们按照预定义的顺序执行,可以用于实现如日志记录、权限验证、事务管理等功能。通过自定义拦截器,开发者...
Struts2 Interceptor是Java Web开发中非常关键的一个概念,它是Apache Struts2框架的核心组成部分。Struts2是一个基于Model-View-Controller (MVC)架构模式的开源框架,用于构建企业级的Java web应用程序。...
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以...
根据提供的文件信息,我们可以归纳出以下相关...这些内容不仅涵盖了Struts2的基础概念,还涉及到了OGNL表达式的使用、ValueStack的管理以及分页功能的具体实现方法等,对于学习和实践Struts2都是非常有价值的参考资料。
最全的InterCepter的基础,面向对象AOP的透彻分析
Spring boot+Mybatis+Mysql+Swagger整合,包括spring boot下创建过滤器filter与intercepter拦截器,使用Intellij idea创建工程,测试OK
Struts2 的配置 struts.xml Action 详解 Struts2 框架是一个基于 Java 语言的 Web 应用程序框架,它提供了一个灵活的架构,允许开发者快速构建基于 Web 的应用程序。在 Struts2 框架中,struts.xml 文件扮演着核心...
Struts2是一个开源的Web框架,它是Struts1的下一代版本,基于Intercepter(拦截器)模式,提供了更为灵活的配置机制,并且与许多其他框架兼容。Struts2.1.6是该框架的一个成熟版本,支持多种插件和功能扩展。 #### ...
(2)拦截器组件可以继承AbstractIntercepter类(实现了Intercepter接口)。 (3)拦截器组件可以继承MethodFilterIntercepter类(继承自AbstractIntercepter),增加了方法过滤功能(上面两种方式是拦截所有方法,这个...
Postman用的拦截器,可以自动获取cookie并填充到Postman。直接解压,然后用Chrome内核的浏览器加载已解压的插件。 使用方法,详见:https://blog.csdn.net/cjs1534717040/article/details/124289171
2你可以任意包装你的出参,比如加上消耗的时间,添加一个唯一的uuid等等,同时这些东西都是由拦截器提供的功能。这些功能也可以做成配置化,比如你那些接口不需要这样的包装,在yml中配置一下,就可以了。 demo已经...
2. **证书管理**:对于进行SSL/TLS拦截和调试,Interceptor可以生成并安装自签名证书,使得开发者可以查看加密的通信内容。这对于测试安全相关的API或处理HTTPS请求尤其有用。 3. **无头模式支持**:Interceptor...
Heltec拦截器 有关详细信息,请参见操纵杆拦截器 Connect pins GND - GND 3.3v - 3.3v 14 - 14 12 - 12 重新映射了14和12以进行串行通信。 是的-将14连接到14-两个程序使用不同的引脚进行发送和接收,因此无需...
Google插件:Sends requests fired through the Postman chrome app.
Flume配置文件kafkaSource 包含Intercepter,包含正则表达式。
Interceptor(拦截器)是AOP(面向切面编程)的一种实现,常用于MVC框架如Spring MVC和Struts2中。Interceptor可以在请求到达Controller(控制器)之前或之后执行,可以理解为一种预处理和后处理机制。与Filter不同...
免费Postman和Postman interceptor压缩包,Postman为文件夹,直接选择扩展程序中的 加载已解压的扩展程序 ,选择解压后的postman文件夹即可,postman-interceptor为crx文件,直接拖入到chrome://extensions/中即可
Android渗透测试工具包