学习心得之……如何用Tonken防止重复提交表单
1个回答
展开全部
二、 Token工作机制
这里以用户注册做为例子,这里有二个Acion:ForwordAction(转发的用户注册页面)、 LoginAction(提交注册页面,完成数据持久化),三个JSP:Login.jsp(提供用户注册的页面)、Index.jsp(用户注册成功的页面)。
用户发个main.do,前段控制器调用ForwordAction,这个Action里New一个令牌,并把这个令牌的信息放到Session里(Session的信息放在request),同时转发到Login.jsp,在这个jsp有一个隐含对象,这个就是Session的Id信息。用户填写注册,用户发送Login.do请求提交信息表单时,页面会带着这个隐含对象,服务器这时,会检测到该页面有Token,并且这个Token是有效的,这时页面的信息将会放入数据库(数据持久化),至此成功完成用户的注册。转发到Index.jsp。 以上的说是用户没有误操作的情况下 如果
,正在提交页面时,点击了刷新,这时又分为两种情况,
如果已经完成对Token的校验,跳转到其他的页面,提示用户不用重复注册(Error.jsp)。如果没有数据没有进入数据库,则发送main.do转发到用户注册的页面。让用户继续注册。
如果注册完成以后用户点击浏览器后退,这是有发送main.do请求,难么ForwordAction又会New一个Token,重复以上的过程,当用户发送再次发送Login.do请求时,服务器检测检测这个也面有Token,但是这时的Token,和数据库里的不匹配,服务器这里认定此时是重复注册,调转到其他的页面(Error.jsp)。
这里以用户注册做为例子,这里有二个Acion:ForwordAction(转发的用户注册页面)、 LoginAction(提交注册页面,完成数据持久化),三个JSP:Login.jsp(提供用户注册的页面)、Index.jsp(用户注册成功的页面)。
用户发个main.do,前段控制器调用ForwordAction,这个Action里New一个令牌,并把这个令牌的信息放到Session里(Session的信息放在request),同时转发到Login.jsp,在这个jsp有一个隐含对象,这个就是Session的Id信息。用户填写注册,用户发送Login.do请求提交信息表单时,页面会带着这个隐含对象,服务器这时,会检测到该页面有Token,并且这个Token是有效的,这时页面的信息将会放入数据库(数据持久化),至此成功完成用户的注册。转发到Index.jsp。 以上的说是用户没有误操作的情况下 如果
,正在提交页面时,点击了刷新,这时又分为两种情况,
如果已经完成对Token的校验,跳转到其他的页面,提示用户不用重复注册(Error.jsp)。如果没有数据没有进入数据库,则发送main.do转发到用户注册的页面。让用户继续注册。
如果注册完成以后用户点击浏览器后退,这是有发送main.do请求,难么ForwordAction又会New一个Token,重复以上的过程,当用户发送再次发送Login.do请求时,服务器检测检测这个也面有Token,但是这时的Token,和数据库里的不匹配,服务器这里认定此时是重复注册,调转到其他的页面(Error.jsp)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询