1.类MethodFiledInterceptor
当只需要拦截特定方法的时候可以继承此拦截器。
然后配置文件中传入两个参数来实现过滤。
<interceptor-ref name="test">
<param name="excludeMethods">method1,method2</param>
<param name="includeMethods">method1,method3</param>
</interceptor-ref>
excludeMethods:不会被拦截器处理
includeMethods:会被拦截器处理
method1同时存在两个参数中,将会被归类为includeMethods.
2.接口PreResutlListener
文件上传的时候,为action定义了一个"fileUpload"拦截器,
<interceptor-ref name="fileUpload" >
<param name="allowedTypes">application/msword,application/vnd.ms-excel,application/zip,text/plain</param>
<param name="maximumSize">5242880</param>
</interceptor-ref>
如果上传文件超过maximumSize指定大小或allowedTypes定义之外的文件类型,则框架会自动跳转到input视图,但是如果input视图里有一个用户列表,从数据库中读取数据,也就是说这个列表的数据必须经过另一个listUser请求才能得到并显示出来,很明显,框架的自动跳转input页面是不会去自动调用listUser请求的,这时候,input页面则显示的是一个没有数据的表格。
解决办法:为上传定一个自定义的拦截器myUpInterceptor,注册PreResultListener监听器(该监听器需要自己实现,功能是执行action之后返回result之前做点该做的事。
//这里,我将ManagerActionInterceptor类即当作拦截器又当作监听器
public class ManagerActionInterceptor extends MethodFilterInterceptor implements PreResultListener {
//实现监听器需实现的方法
public void beforeResult(ActionInvocation invocation, String resultCode) {
// TODO Auto-generated method stub
if(resultCode.equals("input")){
ManageAction ma=(ManageAction)invocation.getAction();
try {
//读取数据库,用于input页面显示
ma.userList();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//实现拦截器需实现的方法
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
//注册监听器
invocation.addPreResultListener(new ManagerActionInterceptor());
return invocation.invoke();
}
3.拦截器栈中多个参数写法
<interceptors>
<interceptor name="i1" class="test1">
<interceptor name="i2" class="test2">
<interceptor-stack name="i3">
<interceptor-ref name="i1"/>
<interceptor-ref name="i2"/>
</interceptor-stack>
</interceptors>
<action name="login" class="..">
<interceptor-ref name="i3">
<param name="i1.name">user</param>
<param name="i2.name">user</param>
</interceptor-ref>
</action>
4.内建拦截器execAndWaite
如果一个action执行时间过长,如超过5秒,则可以使用此拦截器来实现用户等待页面的显示。
<action name="listUser" class="..">
<interceptor-ref name="execAndWait"/>
<interceptor-ref name="defaultStack"/>
<result name="wait">/waiting.jsp</result>
<result>/users.jsp</result>
</action>
waiting.jsp
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title></title>
<!--5秒后自动跳转到users.jsp页面 -->
<meta http-equiv="refresh" content="5;url=<s:url includeParams="all" />"/>
</head>
<body>
Please wait while we process your request.
Click [url=<s:url includeParams=]">[/url] if this page does not reload automatically.
</body>
</html>
"转载请注明出处:http://383984216-qq-com.iteye.com/admin/blogs/1151772
分享到:
相关推荐
"struts2自定义拦截器的示例代码" 以下是 Struts2 自定义拦截器的示例代码的知识点总结: Struts2 拦截器 소개 Struts2框架提供了拦截器机制,以便在Action执行前后进行拦截和处理。拦截器可以实现各种功能,如...
4.3 研究内建的Struts 2拦截器 67 4.3.1 工具拦截器 67 4.3.2 数据转移拦截器 67 4.3.3 工作流拦截器 69 4.3.4 其他拦截器 72 4.3.5 内建的拦截器栈 73 4.4 声明拦截器 74 4.4.1 声明独立的拦截器和拦截器栈 74 ...
这些异常会被捕获并封装到`fieldError`对象中,存储在`ActionContext`中,以便后续的拦截器处理。 3. **反射调用校验方法**:接着,框架会通过反射机制调用Action中的`validateXxx()`方法或通用的`validate()`方法...
Struts2的核心特性之一就是其强大的拦截器机制,它们负责在Action执行前后进行一系列的处理,包括登录检查、日志记录、事务管理等。在Struts2中,我们可以通过自定义拦截器来扩展框架功能。例如,可以创建一个专门...
控制器部分由Action类及其一系列隐藏的拦截器来实现,主要负责处理用户请求并决定应用程序的行为。视图部分则通过丰富的标签库呈现用户界面,这些标签使用OGNL(Object Graph Navigation Language)表达式作为基础,...
这篇博客"Struts开发小结"可能涵盖了作者在使用Struts框架进行开发过程中的经验总结和一些关键点。由于没有直接的描述内容,我们将基于Struts框架的一般特性来讨论相关知识点。 1. **Struts 2框架基础**: Struts ...
### 小结 《Struts 2实战 Struts 2 in action 的中文版》这本书系统地介绍了Struts 2框架的基础知识、核心组件、工作原理以及实际开发技巧。对于希望深入学习和掌握Struts 2框架的开发者来说,这本书是一本不可多得...
4、小结 1、struts2对servlet封装(request,response) ,资源调配和资源的映射 2、框架设计的思想 istruts 配置,过滤器,反射 istruts.properties 3、starts2的使用思路 1、jar 2、配置文件 3、常用类 ...
本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...
一、准备工作及实例 3 ...小结Action 14 9.使用通配符 14 10.使用0配置:ZERO Annotation 15 11.Result配置详解 15 探讨type类型: 16 Type类型值 16 作用说明 16 对应类 16 chain 16 用来处理Action链 16 ...
这些包通常包括但不限于Struts2核心库、拦截器、插件等。正确引入这些库是项目正常运行的基础。 **3. 配置web.xml** 接下来,需要在`web.xml`中注册Struts2的过滤器。Struts2使用FilterDispatcher作为请求分发器,...
- **org.apache.struts2.interceptor**:定义了一系列内置拦截器,这些拦截器可以在请求处理过程中执行特定的任务,如参数绑定、异常处理等。 - **com.opensymphony.xwork2.ActionInvocation**:负责调用Action及其...
在本学习小结中,我们将探讨如何将Struts2与IReport整合,以实现在Web应用中动态生成和展示报表的功能。 首先,让我们了解Struts2的基础知识。Struts2的核心是Action类,它是处理用户请求并返回结果的核心组件。...
**问题描述**:在Struts2配置文件中引用拦截器栈时出现找不到类的错误。 **解决方案**: 1. **检查配置文件**:确保配置文件中的拦截器栈定义正确无误。 2. **确保类存在且可见**:确认拦截器类是否存在于类路径中,...
Struts2框架不仅继承了Struts1的优点,如清晰的MVC架构分离、易于扩展等特性,还在原有的基础上进行了大量的改进和增强,比如引入了拦截器模型、提供了更加灵活的配置选项以及更强大的标签库支持等。这些改进使得...
### Struts2基础知识点...从过滤器和拦截器的作用到动态方法调用的实现,再到具体的登录和注册请求处理示例,旨在帮助读者全面了解Struts2的基本概念和使用方法。希望本文能对你在学习Struts2框架的过程中有所帮助。
前者定义了Action映射、表单bean、数据源等,后者配置Struts拦截器和初始化参数。 4. **ActionForm**:ActionForm对象用于收集和验证用户输入的数据,它是请求参数和业务对象之间的桥梁。每个Action通常对应一个...