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
分享到:
相关推荐
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以...
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找 到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action 链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以...
NULL 博文链接:https://zw7534313.iteye.com/blog/430551
最全的InterCepter的基础,面向对象AOP的透彻分析
Spring boot+Mybatis+Mysql+Swagger整合,包括spring boot下创建过滤器filter与intercepter拦截器,使用Intellij idea创建工程,测试OK
(2)拦截器组件可以继承AbstractIntercepter类(实现了Intercepter接口)。 (3)拦截器组件可以继承MethodFilterIntercepter类(继承自AbstractIntercepter),增加了方法过滤功能(上面两种方式是拦截所有方法,这个...
Postman用的拦截器,可以自动获取cookie并填充到Postman。直接解压,然后用Chrome内核的浏览器加载已解压的插件。 使用方法,详见:https://blog.csdn.net/cjs1534717040/article/details/124289171
2你可以任意包装你的出参,比如加上消耗的时间,添加一个唯一的uuid等等,同时这些东西都是由拦截器提供的功能。这些功能也可以做成配置化,比如你那些接口不需要这样的包装,在yml中配置一下,就可以了。 demo已经...
chromecj.com-Postman-Interceptor_v0.2.23.crx 离线版本测试
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,包含正则表达式。
免费Postman和Postman interceptor压缩包,Postman为文件夹,直接选择扩展程序中的 加载已解压的扩展程序 ,选择解压后的postman文件夹即可,postman-interceptor为crx文件,直接拖入到chrome://extensions/中即可
章鱼社区 技术栈 SpringBoot。Thymeleaf模板引擎。 数据访问层:Mybatis。 数据库:MySql。 服务器:内置Tomcat。...前端相关:jQuery,Bootstrap,Ajax,Layer等。... OAuth2授权登录(Github,百度,...│ ├─intercepter
主要介绍了Java servlet、filter、listener、interceptor之间的区别和联系的相关资料,需要的朋友可以参考下
##CXFClient_Intercepter 初步学习自定义拦截器。通过验证用户名和密码的栗子,实现简单的自定义拦截器功能 #part Three cxfTypeTestClient 这是用来测试JDK webservice 和CXF在参数类型上的不一样,CXF支持比较多的...
:warning: 该项目现在是EE4J计划的一部分。 该仓库已被归档,因为所有活动现在都在。 有关整体EE4J过渡状态,请参见。javax.interceptor javax.interceptor API的存储库
主要介绍了浅谈SpringMVC中Interceptor和Filter区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
SpringMVC+ExtJS完美集成(数据传输方式为JSON和model),同时还支持controller页面配置、页面消息可配置(类似于国际化)、intercepter示例。
Java开发的建站系统神器源码,目前已经有 10w+ 网站使用 JPress 进行驱动,其中包括多个政府机构,...插件被停止:该插件的所有Controller、Handler、Intercepter 自动被移除 插件被卸载:该插件的所有资源全部被删除