JavaWeb学习记录(十六)——防止表单重复提交
产生随机字符串进行验证,如果产生的和Session存储的相同则可以提交,提交后删除session对应的属性值;否则表单提交不成功
一、产生随机字符串的工具类
package web10.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
public class TokenProcessor {
private static TokenProcessor tokenProcessor;
private TokenProcessor(){
}
public static TokenProcessor getInstance(){
if(tokenProcessor==null){
tokenProcessor=new TokenProcessor();
}
return tokenProcessor;
}
public String getToken(){
String token="";
String temp=System.currentTimeMillis()+"";
try {
MessageDigest digest=MessageDigest.getInstance("MD5");
byte[] tokens=digest.digest(temp.getBytes());
token=Base64.encode(tokens);
System.out.println(token+" +++");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return token;
}
}
二、login.jsp
<h3>用户登录</h3>
<form action="./login.do?oper=login" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="pass"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="登录"/></td>
</tr>
</table>
<input type="hidden" name="token" value="${token}"/>
</form>
三、LoginServlet.java(./login.do)
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session=request.getSession();
String oper=request.getParameter("oper");
if("pre".equals(oper)){
session.setAttribute("token", TokenProcessor.getInstance().getToken());
request.getRequestDispatcher("./login.jsp").forward(request, response);
}else if("login".equals(oper)){
String rtoken=request.getParameter("token");
String stoken=(String) session.getAttribute("token");
if(stoken==null||"".equals(stoken)){
System.out.println("不能提交表单");
}else{
if(stoken.equals(rtoken)){
String name=request.getParameter("name");
String pass=request.getParameter("pass");
System.out.println(name+"=============="+pass);
session.removeAttribute("token");
}else{
System.out.println("不能提交表单");
}
}
}
}
JavaWeb学习记录(十六)——防止表单重复提交的更多相关文章
- JavaWeb学习总结——使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- JavaWeb学习 (十二)————使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- (转)JavaWeb学习总结(十三)——使用Session防止表单重复提交
如何防止表单重复提交 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复 ...
- JavaWeb学习总结(十三)——使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- javaWeb学习总结(7)- 使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- JavaWeb学习总结(十一):Session解决form表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- JavaWeb学习总结(十三)——使用Session防止表单重复提交(转)
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- 一脸懵逼学习Struts数据校验以及数据回显,模型驱动,防止表单重复提交的应用。
1:Struts2表单数据校验: (1)前台校验,也称之为客户端校验,主要是通过Javascript编程的方式进行数据的验证. (2)后台校验,也称之为服务器校验,这里指的是使用Struts2通过xm ...
- [原创]java WEB学习笔记73:Struts2 学习之路-- strut2中防止表单重复提交
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- spring boot 学习(七)小工具篇:表单重复提交
注解 + 拦截器:解决表单重复提交 前言 学习 Spring Boot 中,我想将我在项目中添加几个我在 SpringMVC 框架中常用的工具类(主要都是涉及到 Spring AOP 部分知识).比如 ...
随机推荐
- PAT 05-树8 Huffman Codes
以现在的生产力,是做不到一天一篇博客了.这题给我难得不行了,花了两天时间在PAT上还有测试点1没过,先写上吧.记录几个做题中的难点:1.本来比较WPL那块我是想用一个函数实现的,无奈我对传字符串数组无 ...
- Sublime Text2 jedi插件离线安装
1.Sublime Text2 下载安装 2.下载jedi gitbub上的,https://github.com/srusskih/SublimeJEDI 3.打开sublime后,组合键“c ...
- unity3d基础02
调试: 在MonoDevelop里可以断点调试,注意绑定unity进程 使用Debug.Log()打印信息 创建游戏对象: GameObject test = GameObject.CreatePri ...
- 2016-1-9 Quartz框架的学习,剪裁图片并设置边框
#import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...
- 爬虫学习--使用百度api---天气
#coding:utf-8#version:0.1#note:该即用API能查询指定城市的空气质量指数,但城市数量有限,截止2015年3月26日,只能查到全国161个城市的. import urlli ...
- yii2 利用小部件生成后台左边菜单栏
************ 模型层递归查询权限 ************ /** * 递归方式查询权限 */ public function getPrivilege() ...
- 转:Spring中@Autowired注解、@Resource注解的区别
Pay attention: When using these annotations, the object itself has to be created by Spring context. ...
- 【Tsinghua OJ】灯塔(LightHouse)问题
描述 海上有许多灯塔,为过路船只照明.从平面上看,海域范围是[1, 10^8] × [1, 10^8] . (图一) 如图一所示,每个灯塔都配有一盏探照灯,照亮其东北.西南两个对顶的直角区域.探照灯的 ...
- HDU5546 Ancient Go DFS
点击打开链接 题意:给定一个9*9的棋盘,问黑子能否在下一步将白子围住(四面). 由于数据不大,可以直接将'.'换成'x',用DFS搜索. #include<cstdio> #includ ...
- 谷歌、火狐浏览器gift图片缓存后不显示动态效果
<script> $(function(){ $('.center img').prop("src","images/service/01.gif" ...