`

【转】Struts2 wait截拦器

阅读更多
  Struts2 wait截拦器
有了上述的Token Interceptor,可以防止客户重复提交,大大地降低了服务器的负荷。但是对用户来说,可能会很不方便,一不小心点击了提交按钮,进入到了invalid.token页面,就再也回不去了,上述的操作就再也看不见了。

我们能不能提供一个等待画面呢?
每次我们提交之后画面立即迁移到一个类似状态条的画面,这个画面不断的向服务器请求,以确定Action是否执行完毕,一旦Action执行完毕,立即定位到正确的画面。这样不是更好。

Struts2也提供了对等待画面的支持。
首先当我们提交完成的时候,画面会前一到一个叫做等待画面的页面。等待画面定时的向服务器提交请求,以确定服务器操作是否完成。另外正在执行的Action需要有一个拦截对象,拦截等待页面的每一次请求,告诉等待页面是否处理完成。

首先我们需要定义,等待页面和Action是否完成的拦截对象
<action name="longLivedAction" class="com.jpleasure.LongLivedAction">
            <interceptor-ref name="completeStack"/>
            <interceptor-ref name="execAndWait">  
                    <!-- 等待时间,执行时间没有超过此值,将不显示等待画面 (毫秒)-->
                    <param name="delay">1000</param>
                    <!-- 间隔检查时间,检查后台进程有没有执行完毕,如果完成了它就立刻返回,不用等到等待,用户不会看到等待画面 -->
                    <param name="delaySleepInterval">50</param>   
             </interceptor-ref>
            <result name="wait">/jsp/wait.jsp</result>
            <result name="success">/jsp/after.jsp</result>
</action>
<result name="wait">/jsp/wait.jsp</result>定义了等待画面是/jsp/wait.jsp,当我们向服务器提交请求之后,画面会迁移到这个画面。
<interceptor-ref name="execAndWait"/>定义了一个拦截对象,告诉等待画面是否完成了长时间操作。
那么等待画面如何定期的查询呢?
之需要一个指向该Action调用的一个不断地刷新即可。代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="s" uri="/struts-tags" %>

<html>
<head>
    <title>Please wait</title>
    <meta http-equiv="refresh" content="5;url=<s:url includeParams='all'/> "/>
</head>
<body>
</body>
</html>

Please wait while we process your request.
<a href="<s:url includeParams="all" />"> Click Here</a> if this page does not reload automatically.

上述黑体部分表示,一旦画面建立,就建立了一个刷新,每5秒钟刷新一次,刷新的链接为
url=<s:url includeParams=”all”/>,meta是标准浏览器支持的内容之一。
在运行的时候可以看到生成需下的内容:
<meta http-equiv="refresh"
content="5;url=/wait/jsp/longLivedAction.action?name=zhangsf&amp;value=119 "/>
如果浏览器不支持自动刷新也不要紧,可以让客户自己点击Click Here来确定操作是否完成。

其实这里最重要的是execAndWait Interceptor,每次向它拦截的Action发送请求的时候,execAndWait会确定Action操作是否完成,如果完成,将画面定位到对应的页面(通常是SUCCESS指向的页面),否则纸箱wait指向的页面。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yukang_ky/archive/2009/02/05/3864220.aspx
分享到:
评论

相关推荐

    Struts2 wait截拦器

    Struts2 wait截拦器 Struts2 wait截拦器

    struts2注解与拦截器demo

    该例子为struts2注解与拦截器demo,利用myEclipse8.5开发,导入刚才后,自动加载所需struts2的jar包,可以直接运行,是初学struts2注解、拦截器很好的例子,保证10分钟学会2种技术,愿意分享给大家。

    Struts2实例 国际化 类型转换 struts标签

    Struts2是一个强大的MVC(模型-视图-控制器)框架,被广泛应用于Java Web开发。这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查...

    Struts2 校验器

    在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...

    难经3:Struts2,拦截器拦不住Result?

    标题中的“难经3:Struts2,拦截器拦不住Result?”揭示了这是一个关于Struts2框架中拦截器(Interceptor)与结果(Result)交互问题的讨论。在Struts2框架中,拦截器是实现业务逻辑和控制逻辑之间解耦的重要机制,而...

    Struts2拦截器(Interceptor)

    Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)

    struts2 类型转换器

    Struts2是一个非常流行的Java Web框架,它提供了一种优雅的方式来构建MVC(模型-视图-控制器)架构的应用程序。在Struts2中,类型转换器(Type Converter)是框架的一个关键特性,用于处理Action类中属性的自动类型...

    struts2jar包

    在项目中使用Struts2时,我们需要配置struts2的主配置文件(struts.xml),定义Action、结果类型、拦截器栈等。Action是业务逻辑的入口点,Result表示一个操作完成后转向的页面或结果。拦截器是Struts2的一大特色,...

    struts2学习笔记3数据类型转换

    struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换

    Struts2视频教程

    Struts2使用过滤器(Filter)作为前端控制器,相比于Struts1使用servlet作为前端控制器更加优雅。 - **适用范围**:Struts2广泛应用于企业级Java Web项目的开发中,特别是那些需要处理大量用户交互和数据展示的应用。 ...

    Struts2漏洞检查工具Struts2.2019.V2.3

    3. 类加载器问题:Struts2使用了自定义的类加载机制,这为攻击者提供了利用的机会。通过特定的请求,攻击者可能可以加载并执行恶意类,进一步执行RCE。 4. 漏洞利用库:攻击者通常会利用已知的Struts2漏洞库,如CVE...

    Struts2拦截器实现权限控制demo

    在Struts2中,拦截器是实现业务逻辑控制和增强功能的重要机制,它们扮演着类似于AOP(面向切面编程)的角色,允许在动作执行前后插入自定义逻辑。在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何...

    Struts2漏洞测试

    Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...

    struts2小程序 struts2代码

    Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用。这个“struts2小程序”很可能是开发者利用Struts2框架开发的一个小型项目,可能包含了基本的CRUD操作或其他特定功能。...

    struts2-core.jar

    struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...

    留言板留言板struts2留言板struts2

    拦截器链是Struts2的一大特色,允许开发者自定义拦截器,实现如权限验证、日志记录、事务管理等功能。 4. **结果类型(Result)**:Action执行完成后,会返回一个结果类型,告诉框架如何处理后续的响应。Struts2内置...

    转:struts1与struts2的区别

    - **Struts2**: 通过配置拦截器堆栈(Interceptor Stacks)来为每个Action定制不同的执行流程。这种机制使得开发者可以根据具体需求灵活地组合和调整拦截器,实现了更细粒度的控制。 综上所述,Struts2相比Struts1...

    struts2简单例子

    Struts2是一个强大的Java EE应用程序框架,用于构建MVC(模型-视图-控制器)架构的Web应用。这个“struts2简单例子”是初学者理解Struts2工作原理和核心概念的一个很好的起点。让我们深入探讨一下Struts2的基础知识...

    struts2 总结工程大全

    struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...

    struts1和struts2的区别

    - **Struts2**: 支持为每个Action定义不同的拦截器堆栈(Interceptor Stacks),这意味着可以根据不同的Action来配置不同的拦截器组合,增加了灵活性。 通过上述对比可以看出,Struts2相比Struts1在很多方面进行了...

Global site tag (gtag.js) - Google Analytics