Token的使用方法
使用Token可以防止当用户刷新页面和点击后退按钮时造成的页面表单重复提交的问题:
使用方法如下:
㈠
首先要通过一个页面生成一个Token令牌,生成一个随机数
可以创建一个页面main.jsp
然后在该页面上放置一个按钮或者超连接 ,该超连接指向一个action类
在这个action类中使用
this.saveToken(request); //生成Token
Globals s;
return mapping.findForward("success"); //跳转到增加页面
㈡
在--增加页面--中导入如下两个jar包
<%@ page import="org.apache.struts.taglib.html.Constants" %>
<%@ page import="org.apache.struts.Globals" %>
然后在页面上添加一个隐藏域
<input type="hidden" name="<%=Constants.TOKEN_KEY%>" value="<%=session.getAttribute(Globals.TRANSACTION_TOKEN_KEY)%>"/>
此处的name value中的值都是固定的,不允许改变
㈢
在---AddUserAction-----中,使用isTokenValid(request)验证Token,如果产生的Token令牌随机数不同,则
跳转到错误页面,如果相同则把session中的Token删除,然后进行业务处理
if (!this.isTokenValid(request)) {
return mapping.findForward("error");
}
this.resetToken(request);//则该页面只能提交一次(无论刷新或手动提交)
或 this.saveToken(request); //则该页面可以(多次手动提交,刷新不会提交)
//之后跟业务代码
注意:
Hidden的名称必须为Constants.TOKEN_KEY
Hidden的值必须为session.getAttribute(Globals.TRANSACTION_TOKEN_KEY)
思路如下:
1.在前置action中, 在session中保存一个变量A
2.在页面 的request中,也保存一个B 赋值为A的值
3.第一次提交时 A equels B 则必相等,此时 重置A的值 并跳转至上传页面
4. 同2 ,如果手动提交,无影响可以继续上传
5.如果用户手动刷新页面,则 此时不会走页面,直接后台的ACTION (request是不变的)
此时A equels B ==false 跳转至error页面即可
分享到:
相关推荐
<%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-----超链接,类似于html里的<a></a> 3. <s:...
5.1 Struts标签的使用方法 59 5.2 表单标签的共同属性 60 5.3 form标签 62 5.4 textfield、password、hidden标签 63 5.5 submit标签 65 5.6 reset标签 65 5.7 label标签 66 5.8 head标签 66 5.9 textarea...
5.1 Struts标签的使用方法 59 5.2 表单标签的共同属性 60 5.3 form标签 62 5.4 textfield、password、hidden标签 63 5.5 submit标签 65 5.6 reset标签 65 5.7 label标签 66 5.8 head标签 66 5.9 textarea标签 66 ...
11.2、在Tomcat中使用数据库连接池 11.3、查找数据源 11.4、本章摘要 第12章 JSP标签编程 12.1、标签编程简介 12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5...
5.1.10 使用hibernate的isinitialized()与initialize()方法 277 5.1.11 持久化对象间的级联操作 277 5.2 hibernate的检索策略 291 5.2.1 立即检索 291 5.2.2 延迟检索 296 5.2.3 迫切左外连接检索 300 5.3 hql...
11.2、在Tomcat中使用数据库连接池 11.3、查找数据源 11.4、本章摘要 第12章 JSP标签编程 12.1、标签编程简介 12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5...
11.2、在Tomcat中使用数据库连接池 11.3、查找数据源 11.4、本章摘要 第12章 JSP标签编程 12.1、标签编程简介 12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义...
11.2、在Tomcat中使用数据库连接池 11.3、查找数据源 11.4、本章摘要 第12章 JSP标签编程 12.1、标签编程简介 12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义...
11.2、在Tomcat中使用数据库连接池 11.3、查找数据源 11.4、本章摘要 第12章 JSP标签编程 12.1、标签编程简介 12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义...
11.2、在Tomcat中使用数据库连接池 11.3、查找数据源 11.4、本章摘要 第12章 JSP标签编程 12.1、标签编程简介 12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5...
11.2、在Tomcat中使用数据库连接池 11.3、查找数据源 11.4、本章摘要 第12章 JSP标签编程 12.1、标签编程简介 12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义...
11.2、在Tomcat中使用数据库连接池 11.3、查找数据源 11.4、本章摘要 第12章 JSP标签编程 12.1、标签编程简介 12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5...
在 Struts 的 action 中使用 redirect 属性,修改 Struts-config.xml 文件,添加 redirect 属性,设置为 true。 <forward name="list" path="/listnews.jsp" redirect="true"></forward> ...
作为用户在Spring MVC测试中使用注释运行 108 12.2.4测试HTTP基本认证 109 12.3 SecurityMockMvcRequestBuilders 109 12.3.1测试基于表单的认证 109 12.3.2测试注销 110 12.4 SecurityMockMvcResultMatchers 110 ...