struts2 token令牌机制介绍

对于重复提交这一问题我们通常有两种解决方法:

  1. 通过重定向
  2. 通过session token

这里我们主要介绍session token机制,下面我们先介绍token的使用步骤吧:

  1. 首先我们需要用到struts2标签库中的标签元素<s:token/>,如下图所示:
login.png
  1. 编写LoginAction:
loginAction.png
  1. 然后配置struts.xml文件:
struts.png

成功则跳转到output.jsp进行数据展示,失败则跳转到fail.jsp进行错误消息提示 注:invalid.token是框架规定的名字,专门用来处理重复提交的

  1. 编写output.jsp、fail.jsp:
output.png
fail.png

这样就可以解决重复提交了

现在我们来介绍一下底层的机制吧:

用struts2标签<s:token/>是为了让服务器在解析jsp的时候调用TokenTag标签处理类,而该处理类用于生成唯一随机值以及将随机值存于session中,然后又将随机值以隐藏域的形式返回给客户端,在这一刻,客户端以及服务器端拥有着相同的随机值,当表单提交到服务器端的时候,会检查这两个值是否相同,如果相同那么认为是第一次提交,并且将session中的随机值更新或删除,然后继续执行后续流程,下一次如果表单仍以之前的随机值提交上来的话,那么服务器就会检查到这两个值不相同,认定是重复提交,转到invalid.token结果中

简而言之就是以服务端与客户端拥有的随机值是否相同来作为重复提交的判断依据

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,001评论 19 139
  • 什么是Session Session 是另一种记录浏览器状态的机制。不同的是Cookie保存在浏览器中,Sessi...
    Java3y阅读 1,293评论 1 17
  • 朋友是磁石吸来的铁片儿、钉子、螺丝帽和小别针,只要愿意,从俗世上的任何尘土里都能吸来。 第一次听到这么说,以为是铁...
    Jack杰少阅读 748评论 2 3
  • 小白入手新工作中总是会遇到这样的烦恼:反复修改直到差点摔键盘!第一次出现这样的问题情有可原,但是第二次还是反复改变...
    查铭阅读 549评论 0 0