struts2的高级主题
来源:互联网 发布:淘宝店开店流程及费用 编辑:程序博客网 时间:2024/05/01 03:33
题目:使用令牌防止表单重复提交
使用<s:token/>表单标签
struts2对解决表单重复提交提供了支持,通过联合使用页面中的自定义的标签和拦截器来防止重复请求。struts2使用一下逻辑完成这个工作:
1.准备以隐藏字段的方式嵌入唯一令牌的页面
2.将这个唯一令牌隐藏在用户会话中
3. 将准备好的页面返回到用户浏览器中
4.在表单提交时,比较两个令牌(提交的页面中的令牌和隐藏在用户会话中的令牌)。
5.如果令牌不匹配,返回invalid.token结束
其实,网页只是在不应该多次提交的表单中包含了<s:token/>标签
使用<s:token/>的步骤
1.设计带有token标签的网页
ex:
<s:form>
<s:token/>
<s:textfield key="username" label="Username"/>
<s:textfield key="password" label="Password">
</s:form>
2.使用令牌拦截器声明动作映射
<action name="a" class="A">
<interceptor-ref name="mytokenstack"/>
<result name="success">/login_success.jsp</result>
<result name="invalid.token">/duplicatepage.jsp</result>
</action>
<!--
注解:mytokenstack拦截器栈包含了token拦截器,要检查重复提交就必须包含这个拦截器。当检测到一个重复提交请求时这 个 拦截器会返回invalid.token
-->
3.支持基本令牌的拦截器栈
<interceptor-stack name="mytokenstack">
<interceptor-ref name="token"/>
<interceprot-ref name="defaultStack"/>
</interceptor-stack>
然后部署应用就行了,就可以对重复提交进行有效的防止。
其实还有支持高级令牌的拦截器sessionStack,不多做详述;
令牌拦截器规则的例外:根据方法名决定是否拦截的拦截器栈也不多说。
题目:自动显示等待页面
步骤如下:
1.为长时间运行的动作声明动作映射
<action name="search" class="SearchAction">
<interceptor-ref name="waitStack"/>
<result name="success">resultPage</result>
<result name="wait">waitPage</result>
</action>
2.长时间动作运行的拦截器栈
<interceptor-stack name="waitStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="execAndWait"/>
</interceptor-stack>
3.在长时间运行过程中显示的waitPage页面
<html>
<head>
<title>Please wait</title>
<meta http-equiv="refresh" content="2;url=resultPage"/>
</head>
<body>
Proccessing your request,Please wait a moment.................
</body>
</html>
- struts2的高级主题
- struts2高级主题
- 变量的高级主题
- 模板的一些高级主题
- 6-变量的高级主题
- 高级主题
- Struts2 主题
- Python——类的高级主题
- Struts2的模板和主题介绍
- HTTPClient六 高级主题
- Spring容器高级主题
- rman高级恢复主题
- c++Primer5,高级主题
- Spring容器高级主题
- git 高级主题
- Spring容器高级主题
- Struts2高级
- 【Python基础】Python面向对象 - 2 - 类的高级主题
- CListCtrl 报表模式下修改头字符
- 操作系统学习笔记1
- poj 2267 From Dusk till Dawn or: Vladimir the Vampire
- 很久之前写的【成绩管理系统】的数据库
- silverlight应用程序只显示一部分的解决方案(路过的朋友留下脚印)
- struts2的高级主题
- Redhat Linux 9.0 在vmware下,桥接不能上网的解决方法
- (转)Android程序完全退出的三种方法
- OSI 7层协议
- 将LCDS31集成到Coldfusion901中
- Xml xsl dtd Schema html的理解
- [JavaScript] How similar it is with Swing, so it seems coding swing is very helpful for me
- 开
- Spring获取Bean的几种方式