`

struts2拦截器小结(2)

阅读更多
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
1
4
分享到:
评论

相关推荐

    struts2自定义拦截器的示例代码

    "struts2自定义拦截器的示例代码" 以下是 Struts2 自定义拦截器的示例代码的知识点总结: Struts2 拦截器 소개 Struts2框架提供了拦截器机制,以便在Action执行前后进行拦截和处理。拦截器可以实现各种功能,如...

    Struts2 in 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 ...

    Struts2输入校验总结

    这些异常会被捕获并封装到`fieldError`对象中,存储在`ActionContext`中,以便后续的拦截器处理。 3. **反射调用校验方法**:接着,框架会通过反射机制调用Action中的`validateXxx()`方法或通用的`validate()`方法...

    Struts2+Hibernate+Spring项目小结――Struts2部分总结

    Struts2的核心特性之一就是其强大的拦截器机制,它们负责在Action执行前后进行一系列的处理,包括登录检查、日志记录、事务管理等。在Struts2中,我们可以通过自定义拦截器来扩展框架功能。例如,可以创建一个专门...

    Struts2知识点小结-非常实用

    控制器部分由Action类及其一系列隐藏的拦截器来实现,主要负责处理用户请求并决定应用程序的行为。视图部分则通过丰富的标签库呈现用户界面,这些标签使用OGNL(Object Graph Navigation Language)表达式作为基础,...

    struts开发小结

    这篇博客"Struts开发小结"可能涵盖了作者在使用Struts框架进行开发过程中的经验总结和一些关键点。由于没有直接的描述内容,我们将基于Struts框架的一般特性来讨论相关知识点。 1. **Struts 2框架基础**: Struts ...

    Struts 2实战 Struts 2 in action 的中文版

    ### 小结 《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、常用类 ...

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

    Struts2入门教程(全新完整版)

    一、准备工作及实例 3 ...小结Action 14 9.使用通配符 14 10.使用0配置:ZERO Annotation 15 11.Result配置详解 15 探讨type类型: 16 Type类型值 16 作用说明 16 对应类 16 chain 16 用来处理Action链 16 ...

    flex与struts2整合

    这些包通常包括但不限于Struts2核心库、拦截器、插件等。正确引入这些库是项目正常运行的基础。 **3. 配置web.xml** 接下来,需要在`web.xml`中注册Struts2的过滤器。Struts2使用FilterDispatcher作为请求分发器,...

    struts2配置与工作原理

    - **org.apache.struts2.interceptor**:定义了一系列内置拦截器,这些拦截器可以在请求处理过程中执行特定的任务,如参数绑定、异常处理等。 - **com.opensymphony.xwork2.ActionInvocation**:负责调用Action及其...

    struts2+ireport学习小结(一)

    在本学习小结中,我们将探讨如何将Struts2与IReport整合,以实现在Web应用中动态生成和展示报表的功能。 首先,让我们了解Struts2的基础知识。Struts2的核心是Action类,它是处理用户请求并返回结果的核心组件。...

    关于struts实验时的临时总结

    **问题描述**:在Struts2配置文件中引用拦截器栈时出现找不到类的错误。 **解决方案**: 1. **检查配置文件**:确保配置文件中的拦截器栈定义正确无误。 2. **确保类存在且可见**:确认拦截器类是否存在于类路径中,...

    Struts2学习心得

    Struts2框架不仅继承了Struts1的优点,如清晰的MVC架构分离、易于扩展等特性,还在原有的基础上进行了大量的改进和增强,比如引入了拦截器模型、提供了更加灵活的配置选项以及更强大的标签库支持等。这些改进使得...

    struts2基本知识

    ### Struts2基础知识点...从过滤器和拦截器的作用到动态方法调用的实现,再到具体的登录和注册请求处理示例,旨在帮助读者全面了解Struts2的基本概念和使用方法。希望本文能对你在学习Struts2框架的过程中有所帮助。

    struts资料\前半阶段小结

    前者定义了Action映射、表单bean、数据源等,后者配置Struts拦截器和初始化参数。 4. **ActionForm**:ActionForm对象用于收集和验证用户输入的数据,它是请求参数和业务对象之间的桥梁。每个Action通常对应一个...

Global site tag (gtag.js) - Google Analytics