- 浏览: 543193 次
- 性别:
- 来自: 湖南娄底
文章分类
- 全部博客 (252)
- C#资料 (0)
- java资料 (22)
- 数据库资料 (0)
- Java :开发中遇到的问题 (4)
- 书写属于我的人生 (6)
- spring (6)
- hibernate (16)
- struts (17)
- SSH (5)
- Linux操作系统 (1)
- Ext (5)
- Jquery (9)
- Tomcat部署出错 (2)
- xml (5)
- JSON (5)
- javascript 专题 (5)
- 开发环境配置 (2)
- web 开发 (27)
- Eclipse (7)
- Integration (1)
- 解决方案搜罗 (7)
- 网站收藏 (8)
- 测试框架 (1)
- iframe 专题 (6)
- JSTL (2)
- 各种插件收集 (2)
- 权限设计模型探讨 (1)
- DWR (1)
- log4j (3)
- java (11)
- java 格式化 (1)
- 软件工程 (2)
- 乱码专题 (1)
- UML (4)
- java 设计模式 篇 (1)
- 用法收集 (0)
- sourceforge apache solutions (2)
- Struts2 + JPA + Spring 开发 (1)
- 自定义工具箱 (0)
- IDE (4)
- opencms (1)
- jeecms (1)
- ant (0)
- maven (2)
- 数据库连接池 (0)
- spring MVC (0)
- android (1)
- web-server (1)
- iphone-开发环境 (1)
- iphone-软件开发 (6)
- iPhone-软件设计 (1)
- iphone-应用 (3)
- iPhone-设置 (2)
- iphone-软件开发-设计模式篇 (0)
- iphone-软件开发-OC基础 (9)
- iphone-软件开发- UI篇 (9)
- iphone-软件开发-工具类篇 (1)
- iphone-软件开发-第三方篇 (0)
- iphone-软件开发-特效篇 (2)
- iphone-软件开发-动画篇 (1)
- oracle (1)
- Java-Security (0)
- Three20 UI (1)
- IOS-HOW-TO-专题 (1)
- Mark-Develope Issues (1)
- iphone-软件开发- 资料参考篇 (1)
- C 语言-基本语法 (0)
- Java Servlet (2)
- Eclipse optimization (1)
- IOS Basic (0)
- ecl (0)
- FRONT-HTML (0)
- FRONT-JS (0)
- PHP (0)
最新评论
-
qq_29862421:
[[color=brown]color=yellow][url ...
java 上传图片同时获得图片的宽和高 -
hhb19900618:
NSString <==> NSNumber 之前 ...
OC 常用数据类型之间的转换 -
baohuan_love:
果然能解决问题,感谢分享
Tomcat Error Page配置 与 Error Page在IE下不能转发的问题 -
唐丽梅6313:
很细致。。
键盘样式风格有关设置-iOS开发 -
olived:
哥哥,为什么我的没有破解成功,总是提示许可文件丢失!!QQ:3 ...
[软件测试解决方案] soapUI 4.0.1破解方法
Struts 2模拟进度条的原理
对于一些需要较长时间才能完成的任务,在Web开发中,会由HTTP协议会因为超时而断开而面临许多风险,这是在桌面开发不曾遇到的。Struts 2提供的execAndWait拦截器就是为了处理和应付这种情况而设计的。注意,该拦截器不在"defaultStack"中,所以必须在使用它的动作里声明它,并且必须放在拦截器栈的最后一个。
使用了该拦截器后,动作依然正常执行,只是该拦截器会分配一个后台线程处理动作的运行,并在动作完成之前把用户带到一个"等待"页面。,该页面每隔一段时间刷新一次,直到那个后台线程执行完毕为止。如果用户随后又触发了同一个动作,但顶一个动作尚未执行完毕,这个拦截器将继续向用户发送"等待"结果;如果他已经执行完毕,用户会看到该动作的最终结果。
"等待"结果的行为与"dispatcher"结果的行为很相似,但是要注意的是,"等待"结果对应的视图带有如下的meta标签:
<meta http-equiv="refresh" content="5;url=/Struts2/default_progressbar.action"/>
该标签的作用就每隔多少秒就重新加载一次同样的URL。这里"5"表示5秒,"url=/Struts2/default_progressbar.action"表示要加载的URL。
Struts 2是一个灵活强大的框架,如果你不喜欢Struts 2提供的默认"等待页面",你也可以自己设计自己的等待页面,若在动作声明中,没有找到"等待"结果,将使用默认值。
execAndWait拦截器
execAndWait拦截器 可以接收以下参数:
threadPriority:分配给相关线程的优先级,默认值为Thread.NORM_PRIORITY。
delay:向用户发送"等待"结果前的毫秒数,默认值为0。如果你不想立刻发送"等待"结果,可以将该参数设置为一个值。例如,你想让动作超过2秒还未完成时才发送"等待"结果,需要将其值设置为2000.
delaySleepInterval:每隔多少毫秒唤醒主线程(处理动作的后台线程)去检查后台线程是否已经处理完成,默认值是100。这个值设为0时无效。
示例:使用默认视图与自定义视图
创建一个动作类,该动作类的工作为挂起30秒:
public class ProgressbarAction extends ActionSupport
{
private static final long serialVersionUID = 7441785390598480063L;
private int complete = 0;
// 获取进度值
public int getComplete()
{
complete += 10;
return complete;
}
@Override
public String execute()
{
try
{
Thread.sleep(30000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
return SUCCESS;
}
}
配置struts.xml文件:
<package name="progressbar" extends="struts-default">
<action name="default_progressbar" class="struts2.suxiaolei.progressbar.action.ProgressbarAction">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="execAndWait">
<param name="delay">1500</param>
</interceptor-ref>
<result name="success">/state_ok.jsp</result>
</action>
<action name="customer_progressbar" class="struts2.suxiaolei.progressbar.action.ProgressbarAction">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="execAndWait">
<param name="delay">1500</param>
</interceptor-ref>
<result name="wait">/customer_wait.jsp</result>
<result name="success">/state_ok.jsp</result>
</action>
</package>
测试页面:
<body>
<s:a href="/Struts2/default_progressbar.action">default_view</s:a>
<br />
<s:a href="/Struts2/customer_progressbar.action">customer_view</s:a>
</body>
自定义等待页面:
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'customer_wait.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!-- 下面的meta元素才是重点,其他的没什么影响,是IDE自带的 -->
<meta http-equiv="refresh" content="3;url=/Struts2/customer_progressbar.action">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<div>
Please wait...(<s:property value="complete"/>)% complete
</div>
</body>
</html>
最终结果页面:
<body>
OK!
</body>
在浏览器中输入:http://localhost:8081/Struts2/test.jsp,获得如下页面
首先点击,"default_view"链接:
查看它的源代码:
<html>
<head>
<meta http-equiv="refresh" content="5;url=/Struts2/default_progressbar.action"/>
</head>
<body>
Please wait while we process your request...
<p/>
This page will reload automatically and display your request when it is completed.
</body>
</html>
这次点击"customer_view"链接:
...
...
这是自定义界面,最后动作执行完毕后,都会获得最终页面
我们使用Struts 2模拟进度条就完成了!
对于一些需要较长时间才能完成的任务,在Web开发中,会由HTTP协议会因为超时而断开而面临许多风险,这是在桌面开发不曾遇到的。Struts 2提供的execAndWait拦截器就是为了处理和应付这种情况而设计的。注意,该拦截器不在"defaultStack"中,所以必须在使用它的动作里声明它,并且必须放在拦截器栈的最后一个。
使用了该拦截器后,动作依然正常执行,只是该拦截器会分配一个后台线程处理动作的运行,并在动作完成之前把用户带到一个"等待"页面。,该页面每隔一段时间刷新一次,直到那个后台线程执行完毕为止。如果用户随后又触发了同一个动作,但顶一个动作尚未执行完毕,这个拦截器将继续向用户发送"等待"结果;如果他已经执行完毕,用户会看到该动作的最终结果。
"等待"结果的行为与"dispatcher"结果的行为很相似,但是要注意的是,"等待"结果对应的视图带有如下的meta标签:
<meta http-equiv="refresh" content="5;url=/Struts2/default_progressbar.action"/>
该标签的作用就每隔多少秒就重新加载一次同样的URL。这里"5"表示5秒,"url=/Struts2/default_progressbar.action"表示要加载的URL。
Struts 2是一个灵活强大的框架,如果你不喜欢Struts 2提供的默认"等待页面",你也可以自己设计自己的等待页面,若在动作声明中,没有找到"等待"结果,将使用默认值。
execAndWait拦截器
execAndWait拦截器 可以接收以下参数:
threadPriority:分配给相关线程的优先级,默认值为Thread.NORM_PRIORITY。
delay:向用户发送"等待"结果前的毫秒数,默认值为0。如果你不想立刻发送"等待"结果,可以将该参数设置为一个值。例如,你想让动作超过2秒还未完成时才发送"等待"结果,需要将其值设置为2000.
delaySleepInterval:每隔多少毫秒唤醒主线程(处理动作的后台线程)去检查后台线程是否已经处理完成,默认值是100。这个值设为0时无效。
示例:使用默认视图与自定义视图
创建一个动作类,该动作类的工作为挂起30秒:
public class ProgressbarAction extends ActionSupport
{
private static final long serialVersionUID = 7441785390598480063L;
private int complete = 0;
// 获取进度值
public int getComplete()
{
complete += 10;
return complete;
}
@Override
public String execute()
{
try
{
Thread.sleep(30000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
return SUCCESS;
}
}
配置struts.xml文件:
<package name="progressbar" extends="struts-default">
<action name="default_progressbar" class="struts2.suxiaolei.progressbar.action.ProgressbarAction">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="execAndWait">
<param name="delay">1500</param>
</interceptor-ref>
<result name="success">/state_ok.jsp</result>
</action>
<action name="customer_progressbar" class="struts2.suxiaolei.progressbar.action.ProgressbarAction">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="execAndWait">
<param name="delay">1500</param>
</interceptor-ref>
<result name="wait">/customer_wait.jsp</result>
<result name="success">/state_ok.jsp</result>
</action>
</package>
测试页面:
<body>
<s:a href="/Struts2/default_progressbar.action">default_view</s:a>
<br />
<s:a href="/Struts2/customer_progressbar.action">customer_view</s:a>
</body>
自定义等待页面:
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'customer_wait.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!-- 下面的meta元素才是重点,其他的没什么影响,是IDE自带的 -->
<meta http-equiv="refresh" content="3;url=/Struts2/customer_progressbar.action">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<div>
Please wait...(<s:property value="complete"/>)% complete
</div>
</body>
</html>
最终结果页面:
<body>
OK!
</body>
在浏览器中输入:http://localhost:8081/Struts2/test.jsp,获得如下页面
首先点击,"default_view"链接:
查看它的源代码:
<html>
<head>
<meta http-equiv="refresh" content="5;url=/Struts2/default_progressbar.action"/>
</head>
<body>
Please wait while we process your request...
<p/>
This page will reload automatically and display your request when it is completed.
</body>
</html>
这次点击"customer_view"链接:
...
...
这是自定义界面,最后动作执行完毕后,都会获得最终页面
我们使用Struts 2模拟进度条就完成了!
发表评论
-
Struts1.x 国际化
2012-11-15 13:47 0对于一个面向全球的 Web应用程序,按着不同国家的要求显示相 ... -
struts2 convention配置中常见配置选项及说明
2012-08-20 12:47 2331?xml version="1.0" en ... -
研磨Struts2 之 第十三章 国际化
2012-06-20 18:42 1336视频配套PPT,视频地址【 研磨Struts2视频课程 】 ... -
struts2:零配置 之 21.2 约定大于配置
2012-06-19 14:38 640121.2 约定大于配置 21.2.1 ... -
使用struts2中的codebehind插件
2012-06-17 17:21 1301使用struts2中的codebehind ... -
struts2 WARN OgnlValueStack:49 - Error setting expression
2012-02-23 15:53 0今天我遇到下面这样的异常: WARN OgnlValueSt ... -
struts2日期类型转换【转载】
2012-02-10 15:41 913在Struts2中,一般的内置类型都会在由系统自动进行转 ... -
struts2注解
2011-12-19 22:04 2890一、配置web.xml <filt ... -
Struts2 文件上传 之 文件类型 allowedTypes
2011-12-19 21:59 5639Html代码 '.a' : 'a ... -
struts 2支持注解jar包收藏
2011-12-19 21:50 1256附件:struts2-conversion-plugin-2. ... -
struts 2 学习曲线
2011-11-17 12:48 960<说明:以后有待整理 ... -
struts2的struts.properties配置文件详解
2011-11-15 22:45 861【IT168 技术文档】 struts.acti ... -
struts2中几种获得request,session等对象的方法
2011-11-15 22:44 11671、通过ActionContext来获得举例代码如下: ... -
在struts1.2中使用拦截器
2011-08-31 20:41 1081要在struts1.2中使用拦截器,必须使用到以下三个包: ... -
struts1 validator验证框架
2011-07-24 19:49 1422struts1 validator验证框架 ... -
html:cancel按钮的作用,cancel按钮,取消按钮
2011-07-24 16:39 1026struts判断标签 html:cancel html ... -
Struts上传多个及N个文件的例子
2011-07-24 11:28 569一。 web.xml文件 Xml代码 ... -
struts通过javascript使按钮变灰为不可用,灰色按钮
2011-07-24 11:23 2059struts页面用javascript来实现使按钮的变灰 ...
相关推荐
Struts2是一个流行的Java web框架,它为开发者提供了构建MVC(模型-视图-控制器)应用程序的强大工具。在Web开发中,文件上传是常见的需求,而实现带进度条的异步上传则能提供更好的用户体验。这个【标题】"struts2...
在SSH(Struts2、Spring、Hibernate)系统中,拦截器用于增强应用程序的功能,比如权限检查、日志记录、事务管理等。在本场景中,我们关注的是如何利用Struts拦截器来实现一个等待页面,以提升用户体验。 当系统...
Struts2是一个强大的Java web框架,它为开发者提供了构建MVC(模型-视图-控制器)应用程序的结构。在Struts2中实现带进度条的文件上传是一项实用功能,能够提高用户体验,让用户在等待文件上传时能清晰地看到进度。 ...
Struts2是一个基于MVC(Model-View-Controller)设计模式的开源框架,用于简化Java Web应用程序的开发。它提供了拦截器、插件、结果类型等机制,使得开发者能够方便地处理HTTP请求、业务逻辑和视图展示。 2. **...
在IT领域,文件异步上传和进度条显示是常见的用户交互功能,特别是在Web应用程序中。这一功能提高了用户体验,因为用户可以继续浏览其他页面或者执行其他操作,而不必等待文件上传的完成。以下是对这一主题的详细...
Struts2是一个流行的Java Web应用程序框架,用于构建MVC(Model-View-Controller)结构的Web应用。在我们的示例中,Struts2将处理AJAX请求,调用相应的业务逻辑,可能包括与MySQL数据库的交互。Struts2的Action类会...
设置`uploader`属性为Struts2的Action地址,`scriptData`属性用于传递额外的参数,`fileTypeDesc`和`fileTypeExts`定义可上传的文件类型和扩展名。 ```html <script src="js/uploadify/jquery.uploadify.min.js"></...
2.5 Struts应用程序示例 26 2.5.1 部署描述文件和Struts配置文件 27 2.5.2 动作类 28 2.5.3 运行app02a程序 29 2.6 依赖注入 29 2.6.1 概述 29 2.6.2 依赖注入的几种方式 31 2.7 小结 31 第3章 动作与结果 32 3.1 ...
Struts2是一个非常流行的Java Web框架,用于构建可维护、可扩展且结构良好的应用程序。在Struts2中实现多文件异步上传是一个常见的需求,它能够提高用户体验,因为用户可以在不等待所有文件上传完成的情况下继续浏览...
2. **Struts2框架**:Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,用于简化开发流程。在这个例子中,Struts2用于处理用户提交的表单数据,如文件上传和表单字段,并将控制流导向...
2. **Struts框架**:Struts是基于MVC(Model-View-Controller)设计模式的Java Web开发框架,用于构建企业级应用程序。在文件上传场景中,Struts的Action类接收上传的文件,进行处理,并返回响应结果。 3. **Struts...
Java 3DMenu 界面源码 5个目标文件 内容索引:Java源码,窗体界面,3DMenu Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都...
在IT行业中,文件上传是常见的功能之一,尤其是在Web应用程序中。`FileUpLoad`是一个针对异步文件上传的解决方案,特别关注于提供上传进度监听,让用户能够了解文件上传的状态。这个功能对于大文件的上传或者多文件...