day25(令牌机制)
令牌机制
作用:处理页面重复提交,造成数据多次写入数据库。
使用方法:
类似于验证码机制,使用session记录一个不可能重复的值(Uuid)在访问controller时对session进行校验。
//获取session存储的值
String sessionToken = request.getSession().getAttribute("token").toString();
//获取隐藏域中提交的数据
String ptToken = request.getParameter("token");
//非空校验和相等判断
if (null==sessionToken||null==ptToken||!ptToken.equals(sessionToken)) {
//令牌不相符,则直接进行转发,不需要进行对数据库提交数据
request.getRequestDispatcher("ProductFindAllServlet").forward(request, response);
return ;
}
在提交的jsp页面中必须将token值放入session中
<!--UuidUtils.getUuid() 是产生随机序列号-->
<% request.getSession().setAttribute("token", UuidUtils.getUuid()) ;%>
UuidUtils类
import java.util.UUID;
public class UuidUtils {
public static String getUuid(){
String uuid = UUID.randomUUID().toString();
return uuid;
}
}
注意事项:
1.在jsp页面中需要提交session中的值
位置:form表单中 写一个隐藏表单 用来提交session中的值
<input type="hidden" value="${sessionScope.token }" name="token"/>
2.异常处理(NullPointerException)
解决方式:对于有可能产生的非空字段进行判断。
if(null==sessionToken||null==ptToken)
{ }
day25(令牌机制)的更多相关文章
- 【Java EE 学习 36】【struts2】【struts2系统验证】【struts2 ognl值栈】【struts2 ongl标签】【struts2 UI标签】【struts2模型驱动和令牌机制】
一.struts2系统验证 1.基于struts2系统验证的方式实际上就是通过配置xml文件的方式达到验证的目的. 2.实际上系统校验的方法和手工校验的方法在底层的基本实现是相同的.但是使用系统校验的 ...
- java- 综合实例-增删查改查,删除多项,分页,令牌机制
重点内容:分页.令牌机制(重定向下防止重复提交).使用c3p0连接数据库(以及数据库连接类) 项目结构: 类: 项目展示: 数据库: /* SQLyog Ultimate v12.09 (64 bit ...
- struts token令牌机制
利用Struts同步令牌(Token)机制来解决Web应用中的重复提交问题.该方法的基本原理是:服务器端在处理到达的request之前,会将request中的Token值与保存在当前用户session ...
- struts2中token的令牌机制
通常在普通的操作当中,我们不需要处理重复提交的,而且有很多方法来防止重复提交.比如在登陆过程中,通过使用redirect,可以让用户登陆之上重定向到后台首页界面,当用户刷新界面时就不会触发重复提交了. ...
- struts2 防止表单重复提交--令牌机制
jsp: action: 配置文件:
- struts2 模拟令牌机制防止表单重复提交
web.xml: <?xml version="1.0" encoding="UTF-8"?><web-app version="3 ...
- Hadoop安全机制之令牌
介绍 Hadoop中的安全机制包括认证和授权.而Hadoop RPC中采用SASL(Simple Authentication and Security Layer,简单认证和安全层)进行安全认证,具 ...
- keystone令牌三种生成方式
keystone认证方式:UUID.PKI.Fernet; 知识点复习: 通俗的讲,token 是用户的一种凭证,需拿正确的用户名/密码向 Keystone 申请才能得到.如果用户每次都采用用户名/密 ...
- 令牌Token和会话Session原理与攻略
本篇文章将从无到完整的登录框架或API详细讲述登录令牌原理.攻略等安全点. 有些协议或框架也喜欢把令牌叫票据(Ticket),不论是APP还是Web浏览器,很多框架或协议都用到了本文所说的这套类似的认 ...
随机推荐
- js去除字符串空格(空白符)
使用js去除字符串内所带有空格,有以下三种方法: ( 1 ) replace正则匹配方法 去除字符串内所有的空格:str = str.replace(/\s*/g,""); 去除字 ...
- 可迭代对象(Iterable)和迭代器(Iterator)
迭代是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一 个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 1. 可迭代对象 以直接作用于 ...
- BZOJ 4521 [CQOI2016]手机号码 - 数位DP
Description 在$[L, R]$找出有几个数满足两个条件 : 1 : 不同时含有$4$ 和 $8$ 2 : 至少有$3$个相邻的数相同 Solution 非常容易的数位DP, $pos$ 为 ...
- tableView的cell之间间隔显示空白区域
//再要创建的cell中修改frame - (void)setFrame:(CGRect)frame{ frame.origin.x += ; frame.origin.y += ; frame.si ...
- 存储过程和函数 PROCEDURE & FUNCTION
SQL语句执行的时候,要首先编译,然后在被执行.在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行. 具体而言 ...
- Java 线程池 Executor 框架
在Java中,可以通过new Thread 的方法来创建一个新的线程执行任务,但是线程的创建是非常耗时的,而且创建出来的新的线程都各自运行.缺乏统一的管理,这样的后果是可能导致创建过多的线程从而过度消 ...
- ubuntu 安装jdk7小结(转载)
ubuntu 安装jdk7小结 目录(?)[+] ubuntu 安装jdk7,现在来总结一下:第一步:下载jdk-7-linux-i586.tar.gz直接在ORACLE的官网中下载就可以:http: ...
- word表格如何实现序号自动填充
打开word文档,我们需要在如下表格中的准考证号这一列中输入准考证号,手工输入肯定很慢,且容易出错. 我们先选中需要填充准考证号的表格. 选择功能区域中的“开始”,在“段落”组中点击“编号”按 ...
- mysql 5.7 修改密码
mysql 5.7 ,user表就没有password 这个字段了. ') where user='root' and host='localhost'; 这样当然就改不了密码了. ') where ...
- Fiddler建好代理后,能连到手机,但手机不能上网了是什么原因
依次 tools(工具) >> fiddler options(fiddler选项) >> connections( 连接) >>allow remot ...