- 浏览: 1349690 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (896)
- spring4 (14)
- hibernate3 (26)
- spring2 (35)
- struts2 (55)
- struts1 (15)
- 设计模式 (15)
- java (172)
- mybatis3 (11)
- sql (17)
- mysql (13)
- jbpm (10)
- J2EE (45)
- tools (29)
- js (83)
- 数据结构 (13)
- Html (26)
- web (22)
- flex (33)
- Oracle (57)
- linux (49)
- 算法 (6)
- 其它 (12)
- easyui (1)
- bootstrap (13)
- xml (2)
- tomcat (1)
- redis (10)
- activemq (2)
- webservice (11)
- maven (2)
- springboot (1)
- ubuntu (1)
- python (14)
- rocketmq (1)
- springcloud (10)
- opencv (1)
最新评论
-
mike_eclipse:
Hashtable是线程不安全的吗?好像是线程安全的吧?
多线程之集合类 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
lodop打印控件 -
xingcxb:
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采 ...
java 读写Properties文件,不会出现中文乱码 -
tiger20111989:
...
Spring注解方式管理事务 -
zw7534313:
...
js 文字上下滚动 无间断循环显示
1.要求拦截器是无状态的原因是Struts 2不能保证为每一个请求或者action创建一个实例,所以如果拦截器带有状态,会引发并发问题。
所有的Struts 2的拦截器都直接或间接实现接口com.opensymphony.xwork2.interceptor.Interceptor。除此之外,大家可能更喜欢继承类com.opensymphony.xwork2.interceptor.AbstractInterceptor。
2.
配置和使用拦截器
在struts-default.xml中已经配置了以上的拦截器。如果您想要使用上述拦截器,只需要在应用程序struts.xml文件中通过“<include file="struts-default.xml" />”将struts-default.xml文件包含进来,并继承其中的struts-default包(package),最后在定义Action时,使用“<interceptor-ref name="xx" />”引用拦截器或拦截器栈(interceptor stack)。一旦您继承了struts-default包(package),所有Action都会调用拦截器栈 ——defaultStack。当然,在Action配置中加入“<interceptor-ref name="xx" />”可以覆盖defaultStack。
3.自定义拦截器的配置:
<package name="intercepter" extends="struts-default">
<interceptors>
<interceptor name="myInterceptor" class="struts.interceptor.TimerInterceptor"></interceptor>
</interceptors>
<action name="test" class="struts.action.TestAction">
<interceptor-ref name="myInterceptor"></interceptor-ref>
<result>index.jsp</result>
<result name="input">input.jsp</result>
</action>
</package>
import com.opensymphony.xwork2.interceptor.Interceptor;
public String intercept(ActionInvocation ai) throws Exception {
String userName=(String)ai.getInvocationContext().getSession().get("user");
if(userName!=null){
Thread.sleep(5000);
System.out.println("timer interceptor..........................");
return ai.invoke(); //成功则执行action方法
}
else{
return Action.INPUT; //不成功则跳转到 name="input" 的result
}
}
}
(1)<interceptor-ref name="timer"/>
INFO [com.opensymphony.xwork2.interceptor.TimerInterceptor] - Executed action [//Login!execute] took 110 ms. 执行action所用的时间
------------------------
createSession和freemarker有关 :这是特别有用当使用“ @ s.token ”标记freemarker模板
- struts2-interceptor.rar (7.5 KB)
- 下载次数: 1
评论
法过滤拦截器,顾名思义,过滤的是方法。其实在struts2中可以在一个action类中写很多个与aciton的execute方法类似的方法。
只要在struts。Xml中的action添加一个属性就可以了这个属性是method比如:
<action name="register"class="com.test.action.RegisterAction" method="test">当然在action类中也有个test()方法
这个拦截器可以细化到拦截到具体的哪一个方法。如果不是方法过滤拦截器 哪么它可能将与execute()方法类似的方法都执行。
比如说上面的test()方法。如此这样照成很多的不必要。于是这种拦截器就显的格外的重要。
在这个类继承后实现的不是inteceptor()方法而是doIntercept(),可是做好这个类后如何配置继承MethodFilterInterceptor这个类呢?
如下(为了实现过滤方法加入了几个参数,其他的都相同):
<interceptor-ref name="myinterceptor2">
<param name="includeMethods">execute,test</param>
</interceptor-ref>
includeMethods 包含execute,test这两个方法,结果执行了这个拦截器,如果改成excludeMethods ,就不会执行了,也可以再加下面的一个参数
<param name="excludeMethods">execute,test</param>
不排除execute,test这两个方法 可是又加入又排除到底执行吗?答案是执行的,必定结果是最能说明问题的!呵呵!
发表评论
-
struts2 对异常的处理
2015-12-11 19:57 797struts2 对异常的处理 使用自定义类处理异常 ... -
struts/spring/mybatis的整合
2015-10-31 14:19 1101struts/spring/mybatis的整合 1 ... -
struts2 异常处理
2015-06-30 16:10 425异常处理后,能够提供友好的用户界面,而不是一些错误的 ... -
struts2+sring4+mybatis3集成框架(二)
2015-06-30 13:48 7771.jsp自定义标签:分页标签 ... -
struts2 中的OGNL
2015-06-28 08:13 797OGNL是Object-Graph Na ... -
struts2 参数绑定(Jsp获取参数的方法)
2015-06-28 07:31 1678在JSP页面与ACTION之 ... -
struts2 参数绑定(Action接收参数的方法)
2015-06-28 07:26 1269Struts2中Action接收参数的方法主要有以下三 ... -
struts2+sring4+mybatis3集成框架(一)
2015-06-26 08:08 1096struts2.3.24、spring4. ... -
struts2中 # % $ 的区别和用法
2010-09-29 09:15 1147Struts2 中OGNL表达式的用 ... -
struts2 %{#foobar['foo1']} -- %{}的作用
2010-08-31 14:19 1360“%”符号的用途是在标志的属性为字符串类型时,计算OGNL表达 ... -
js util
2010-08-02 16:18 1146http://www.ilovejs.net/archives ... -
Struts2集成spring:
2010-08-02 16:08 1254Struts2集成spring: Spring插件通过覆盖S ... -
Struts2提供了多种方式来访问request,session,application
2010-07-30 10:29 1307Struts2提供了两种方式来访问request,sessio ... -
Struts2 标签
2010-07-29 16:33 1295Struts2通用标签: 数据标签: 1. Pro ... -
strtuts2 Request
2010-07-27 10:21 11641.ServletActionContext.getReque ... -
使用Struts2 的result 传递参数
2010-07-27 09:26 15371.当使用type=“redirectAction” 或typ ... -
Struts2 报错
2010-07-23 10:59 1371http://wenku.baidu.com/view/e0f ... -
FreeMarker
2010-07-22 16:48 2088与jsp在HTML页面中嵌入java脚本代码不同,FreeMa ... -
Struts2类型转换
2010-07-21 15:34 1771Struts2类型转换: 在基于HTTP协议的Web应用 ... -
OGNL表达式
2010-07-21 10:56 1605OGNL表达式: 1. 不要忽略了用于界定整个常量字符串的 ...
相关推荐
`Struts2Day2_intercepter`指的是Struts2的核心特性之一——拦截器。拦截器是Struts2处理请求的一种机制,它们按照预定义的顺序执行,可以用于实现如日志记录、权限验证、事务管理等功能。通过自定义拦截器,开发者...
最全的InterCepter的基础,面向对象AOP的透彻分析
2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher被调用,...
它构建于Intercepter Model之上,并继承了Struts 1.x的一些特性。Struts2通过MVC(Model-View-Controller)模式简化了Web应用程序的开发过程。 ### OGNL(Object-Graph Navigation Language) - **OGNL** 是一种...
Struts2 的配置 struts.xml Action 详解 Struts2 框架是一个基于 Java 语言的 Web 应用程序框架,它提供了一个灵活的架构,允许开发者快速构建基于 Web 的应用程序。在 Struts2 框架中,struts.xml 文件扮演着核心...
Struts2是一个开源的Web框架,它是Struts1的下一代版本,基于Intercepter(拦截器)模式,提供了更为灵活的配置机制,并且与许多其他框架兼容。Struts2.1.6是该框架的一个成熟版本,支持多种插件和功能扩展。 #### ...
(2)拦截器组件可以继承AbstractIntercepter类(实现了Intercepter接口)。 (3)拦截器组件可以继承MethodFilterIntercepter类(继承自AbstractIntercepter),增加了方法过滤功能(上面两种方式是拦截所有方法,这个...
Interceptor(拦截器)是AOP(面向切面编程)的一种实现,常用于MVC框架如Spring MVC和Struts2中。Interceptor可以在请求到达Controller(控制器)之前或之后执行,可以理解为一种预处理和后处理机制。与Filter不同...
- **Intercepter框架** - Interceptor的工作原理及其在WebWork中的应用。 - **OGNL表达式语言** - OGNL(Object-Graph Navigation Language)的使用方法。 - **验证框架** - WebWork内置的验证框架及其配置方法。 -...