Struts2(XWork)提供的拦截器的功能说明:
拦截器
|
名字
|
说明
|
Alias Interceptor
|
alias
|
在不同请求之间将请求参数在不同名字件转换,请求内容不变
|
Chaining Interceptor
|
chain
|
让前一个Action的属性可以被后一个Action访问,现在和chain类型的result(<result type=”chain”>)结合使用。
|
Checkbox Interceptor
|
checkbox
|
添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox。
|
Cookies Interceptor
|
cookies
|
使用配置的name,value来是指cookies
|
Conversion Error Interceptor
|
conversionError
|
将错误从ActionContext中添加到Action的属性字段中。
|
Create Session Interceptor
|
createSession
|
自动的创建HttpSession,用来为需要使用到HttpSession的拦截器服务。
|
Debugging Interceptor
|
debugging
|
提供不同的调试用的页面来展现内部的数据状况。
|
Execute and Wait Interceptor
|
execAndWait
|
在后台执行Action,同时将用户带到一个中间的等待页面。
|
Exception Interceptor
|
exception
|
将异常定位到一个画面
|
File Upload Interceptor
|
fileUpload
|
提供文件上传功能
|
I18n Interceptor
|
i18n
|
记录用户选择的locale
|
Logger Interceptor
|
logger
|
输出Action的名字
|
Message Store Interceptor
|
store
|
存储或者访问实现ValidationAware接口的Action类出现的消息,错误,字段错误等。
|
Model Driven Interceptor
|
model-driven
|
如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中。
|
Scoped Model Driven
|
scoped-model-driven
|
如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法将其放入Action内部。
|
Parameters Interceptor
|
params
|
将请求中的参数设置到Action中去。
|
Prepare Interceptor
|
prepare
|
如果Acton实现了Preparable,则该拦截器调用Action类的prepare方法。
|
Scope Interceptor
|
scope
|
将Action状态存入session和application的简单方法。
|
Servlet Config Interceptor
|
servletConfig
|
提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问。
|
Static Parameters Interceptor
|
staticParams
|
从struts.xml文件中将<action>中的<param>中的内容设置到对应的Action中。
|
Roles Interceptor
|
roles
|
确定用户是否具有JAAS指定的Role,否则不予执行。
|
Timer Interceptor
|
timer
|
输出Action执行的时间
|
Token Interceptor
|
token
|
通过Token来避免双击
|
Token Session Interceptor
|
tokenSession
|
和Token Interceptor一样,不过双击的时候把请求的数据存储在Session中
|
Validation Interceptor
|
validation
|
使用action-validation.xml文件中定义的内容校验提交的数据。
|
Workflow Interceptor
|
workflow
|
调用Action的validate方法,一旦有错误返回,重新定位到INPUT画面
|
Parameter Filter Interceptor
|
N/A
|
从参数列表中删除不必要的参数
|
Profiling Interceptor
|
profiling
|
通过参数激活profile
|
另外AbstractInterceptor提供了一个简单的Interceptor的实现,这个实现为:
public abstract class AbstractInterceptor implements Interceptor {
public void init() {
}
public void destroy() {
}
public abstract String intercept(ActionInvocation invocation) throws Exception;
}
在不需要编写init和destroy方法的时候,只需要从AbstractInterceptor继承而来,实现intercept方法即可。
我们尝试编写一个Session过滤用的拦截器,该拦截器查看用户Session中是否存在特定的属性(LOGIN属性)如果不存在,中止后续操作定位到LOGIN,否则执行原定操作,代码为:
public class CheckLoginInterceptor extends AbstractInterceptor {
public static final String LOGIN_KEY = "LOGIN";
public static final String LOGIN_PAGE = "global.login";
public String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("begin check login interceptor!");
// 对LoginAction不做该项拦截
Object action = actionInvocation.getAction();
if (action instanceof LoginAction) {
System.out.println("exit check login, because this is login action.");
return actionInvocation.invoke();
}
// 确认Session中是否存在LOGIN
Map session = actionInvocation.getInvocationContext().getSession();
String login = (String) session.get(LOGIN_KEY);
if (login != null && login.length() > 0) {
// 存在的情况下进行后续操作。
System.out.println("already login!");
return actionInvocation.invoke();
} else {
// 否则终止后续操作,返回LOGIN
System.out.println("no login, forward login page!");
return LOGIN_PAGE;
}
}
}
注册拦截器
<interceptors>
<interceptor
name="login"
class="com.jpleasure.teamware.util.CheckLoginInterceptor"/>
<interceptor-stack name="teamwareStack">
<interceptor-ref name="login"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
将上述拦截器设定为默认拦截器:
<default-interceptor-ref name="teamwareStack"/>
这样在后续同一个package内部的所有Action执行之前都会被login拦截。
分享到:
相关推荐
struts2常用拦截器,struts2经常用到的拦截器,熟悉熟悉
拦截器和过滤器的区别 1、拦截器基于动态代理 , 过滤器基于函数回调 2、拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器 3、拦截器在方法前后,异常前后等调用,而过滤器只能在请求前和请求...
常用拦截 拦截器HandlerInterceptor 拦截器MethodInterceptor 添加依赖 创建启动类 创建拦截器类 创建控制器 监控control请求耗时,提高性能
学习常用知识(java,sql,oracle,ejb,ssh,struts,xml,监听器,拦截器,过滤器等等)这些都是本人的学习心得非常适用,希望能该初学者带来更大的帮助!!!
vue axios拦截器常用之重复请求取消 引言 上一篇介绍了axios的简单封装,知道了axios拦截器的应用场景和方法,今天来看一下对于响应时间过长且请求次数过高的情况拦截器如何处理。 取消请求的方法 Axios使用...
主要使用到的技术:Spring+SpringMVC+MyBatis+MySql+BootStrap+Ajax校验用户名密码+拦截器+文件上传+日期转换。使用的jdk是1.8.0+Tomcat7,都很常用,jar包都在压缩包里面,导进项目,配置jdk,Tomcat就能运行。
Spring boot Interceptor工作原理使用场景常用拦截器接口HandlerInterceptor例子工作流程AsyncHandlerInterceptor例子工作流程HandlerInterceptorAdapter例子工作流程WebRequestInterceptor例子工作流程配置拦截器 ...
文件的国际化字符串中使用OGNL,格式为${表达式},例如: validation.required=${getText(fileName)} is required 2. 使用java.text.MessageFormat中的字符串格式,格式为{ 参数序号(从0开始), 格式类形(number |...
本质上来说,它跟大部分设计模式一样,都是为了解耦代码,应对代码的复杂性,让代码满足开闭原则,提高代码的可扩展性。除此之外,我们还提到,职责链模式常用在框架的开发
Axios拦截器配置 main.js //定义一个请求拦截器 Axios.interceptors.request.use(function(config){ store.state.isShow=true; //在请求发出之前进行一些操作 return config }) //定义一个响应拦截器 Axios....
(牛客网学习)头条资讯,包含登录注册,添加资讯,上传图片,评论,点赞,站内信,使用技术:前端使用模版FreeMarker,后台:springboot,mybatis,redis,拦截器,实现消息队列,异步更新数据库 项目总的架构:...
完整版Java web开发教程PPT课件 Java开发进阶教程 第15章 spring mvc核心对象拦截器(共26页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第17章 自定义orm框架(共11页).pptx 完整版Java web开发教程...
本篇文章主要介绍了Struts2拦截器登录验证实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
资源包中的文件手册部分,详细记录了Android开发的核心知识点和常用技术。无论是初学者还是有一定经验的开发者,都能从中找到所需的学习资料。手册采用了简洁明了的排版方式,使得查阅更加方便快捷。同时,手册内容...
OKHttp官网上面介绍:拦截器是一种强大的机制,可以监视,重写和重试调用。这里我们主要对拦截器的网络请求头和数据请求的封装。 网络请求头拦截器 在Android应用中,我们通常需要获取用户手机的IMEI值和其他一些...
涉及到SSM框架整合+前端框Bootstrap+Ajax校验+登录拦截器+图片文件上传+日期类型转换器+json格式传参等常用功能的使用。 使用技术: spring4.0 springmvc4.0.2 mybatis3.2.7 bootstrap3 Ajax Jquery 拦截器 文件上传...
内置对象、显示对象信息、文件上传、使用文件服务器、拦截器、配置druid数据库连接池、整合MyBatis框架、事务控制、Druid监控、整合ActiveMQ、 整合RabbitMQ、整合kafka、邮件发送、定时调度、Actuator监控、 整合...
4.4.1 声明独立的拦截器和拦截器栈 74 4.4.2 将拦截器映射到动作组件 76 4.4.3 设置、覆盖拦截器参数 77 4.5 构建自定义拦截器 78 4.5.1 实现Interceptor接口 78 4.5.2 构建AuthenticationInterceptor拦截器 79 4.6 ...
拦截器和过滤器有什么区别?程序中是先执行拦截器还是过滤器?请描述Mybatis结果集中 ResultMap 和ResultType的区别。Java中 @PostConstruct和@PreDestroy注解有什么作用?编写Webservice接口服务端(框架)有几种...
React中使用axios发送请求的几种常用方法 目录 React中安装并引入axios依赖 ...axios拦截器的使用 React中安装并引入axios依赖 使用axios进行GET请求 使用axios.get方式 使用axios(config