struts2 应用程序创建进度条(等待页面)
来源:互联网 发布:淘宝banner图尺寸 编辑:程序博客网 时间:2024/04/29 07:14
Struts 2模拟进度条的原理
对于一些需要较长时间才能完成的任务,在Web开发中,会由HTTP协议会因为超时而断开而面临许多风险,这是在桌面开发不曾遇到的。Struts 2提供的execAndWait拦截器就是为了处理和应付这种情况而设计的。注意,该拦截器不在"defaultStack"中,所以必须在使用它的动作里声明它,并且必须放在拦截器栈的最后一个。
使用了该拦截器后,动作依然正常执行,只是该拦截器会分配一个后台线程处理动作的运行,并在动作完成之前把用户带到一个"等待"页面。,该页面每隔一段时间刷新一次,直到那个后台线程执行完毕为止。如果用户随后又触发了同一个动作,但顶一个动作尚未执行完毕,这个拦截器将继续向用户发送"等待"结果;如果他已经执行完毕,用户会看到该动作的最终结果。
"等待"结果的行为与"dispatcher"结果的行为很相似,但是要注意的是,"等待"结果对应的视图带有如下的meta标签:
该标签的作用就每隔多少秒就重新加载一次同样的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秒:
配置struts.xml文件:
测试页面:
自定义等待页面:
最终结果页面:
在浏览器中输入:http://localhost:8081/Struts2/test.jsp,获得如下页面
首先点击,"default_view"链接:
查看它的源代码:
这次点击"customer_view"链接:
...
...
这是自定义界面,最后动作执行完毕后,都会获得最终页面
我们使用Struts 2模拟进度条就完成了!
转载自:http://sishuok.com/forum/blogPost/list/508.html
- struts2 应用程序创建进度条(等待页面)
- Struts2设置等待页面
- struts2实现等待页面
- struts2--显示等待页面
- 使用等待句柄创建 ASP.NET 应用程序
- 等待对话框(网络请求等待进度条效果)
- struts2上传文件(进度条)
- C#中进度条等待
- 进度条和等待框
- 进度条和等待框
- 进度条和等待框
- javaMe开等待进度条
- Android 等待进度条
- 仿微信视频等待进度条
- 自定义等待进度条实现
- Struts2进度条
- 第一个struts2应用程序的创建
- (插件收藏)Progress.js – 为页面上的任意对象创建进度条效果
- Android Framework------之Keyguard 简单分析
- 官方就会感觉一个和集体非共和国
- 大数据时代(二)大数据的优势
- Spring 多线程
- 份痛苦图优酷放一个哭
- struts2 应用程序创建进度条(等待页面)
- TStringlist自定义排序
- 转发和重定向
- UIView之ContentMode基础
- 大数据时代(三)大数据的隐患
- 除去Scala的糖衣(13) -- Default Parameter Value
- hdu1171 Big Event in HDU 01-背包
- 比赛现场气氛营造问题II
- java中vector的详细用法