[Struts]Token 使用及原理
Struts Token 使用
1,先在一个Action中,调用saveToken(HttpServletRequest request)方法。然后转向带有表单的JSP页面。
2,在JSP页面提交表单给一个Action,再这个Action中进行是否为重复提交的判断。
// 未重复提交时,正确的时候应该做的事情
return mapping.findForward("success");
} else {
// 重复提交时,需要做的事情
saveToken(request);
return mapping.findForward("error");
}
Struts Token 机制:
1, 由第一个Action调用saveToken(HttpServletRequest request),这个方法内部实现如下:
token.saveToken(request);
}
token.saveToken(request);
这个方法的实现如下:
HttpSession session = request.getSession();
String token = generateToken(request);
if (token != null) {
session.setAttribute(Globals.TRANSACTION_TOKEN_KEY, token);
}
}
这个方法调用generateToken方法实现如下:
HttpSession session = request.getSession();
String token = generateToken(request);
if (token != null) {
session.setAttribute(Globals.TRANSACTION_TOKEN_KEY, token);
}
}
generateToken完毕后,将得到的唯一值setAttribute到session中。
Globals.TRANSACTION_TOKEN_KEY的值是:” org.apache.struts.action.TOKEN”
然后跳转到JSP页面。
2, JSP页面的Struts自定义标签 <html:form>的标签类:org.apache.struts.taglib.html. FormTag
这个类的doStartTag()方法会调用本类的renderToken()方法。
StringBuffer results = new StringBuffer();
HttpSession session = pageContext.getSession();
if (session != null) {
String token =
(String) session.getAttribute(Globals.TRANSACTION_TOKEN_KEY);
if (token != null) {
results.append("<input type=\"hidden\" name=\"");
results.append(Constants.TOKEN_KEY);
results.append("\" value=\"");
results.append(token);
if (this.isXhtml()) {
results.append("\" />");
} else {
results.append("\">");
}
}
}
return results.toString();
}
这样子会生成类似于
value="6aa35341f25184fd996c4c918255c3ae">
的隐藏标签。
然后提交到一个Action中,在Action中用isTokenValid()方法进行比较session中” org.apache.struts.action.TOKEN”的这个key所对应的值和提交来的request中的” org.apache.struts.action.TOKEN”的这个value是否一致。
如果为true,那么证明可以提交。如果为false,证明已经重复,不允许提交。
转载于:https://www.cnblogs.com/u0mo5/p/4170426.html
[Struts]Token 使用及原理相关推荐
- 浅析Struts 体系结构与工作原理(图)
Struts 体系结构是目前基于java的 web系统设计中广泛使用的mvc构架. 基本概念 Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用模 ...
- Struts 体系结构与工作原理(图)
Struts 体系结构是目前基于java的 web系统设计中广泛使用的mvc构架. 基本概念 Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用模 ...
- Struts 体系结构与工作原理 图
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Stru ...
- 分步学习Struts(三) 原理分析
之前的实例演示,我们已经基本了解了如何使用Struts框架,这次我们主要讲解一下Struts框架是如何具体实现MVC的. 在介绍之前有几个名词需要大家理解一下: ActionServl ...
- oracle access manager token,AuthenticationManager验证原理
AuthenticationManager相关类图 AuthenticationManager验证过程 AuthenticationManager验证过程涉及到的类和接口较多,我们就从这里开始逐一分析 ...
- 基于jwt的token验证、原理及流程
来源:www.cnblogs.com/better-farther-world2099 一.什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JS ...
- oauth2.0授权协议中刷新令牌refresh token的工作原理及生命周期分析
在学习oauth2.0协议的时候,对于刷新令牌refresh token感觉很困惑.主要是为啥需要刷新令牌,以及刷新令牌是如何工作的,技术细节是啥?比如通过refresh token可以让access ...
- Token令牌的原理及使用
Token令牌 1. Token的定义 2. 使用Token的目的 3. Token 的优点 4. Token一般用在三个地方 5. Token的验证过程 1. Token的定义 Token是服务端生 ...
- Struts 体系结构与工作原理(图) .
2019独角兽企业重金招聘Python工程师标准>>> 请至以下链接处查看. http://blog.csdn.net/fenglibing/archive/2007/08/21/1 ...
最新文章
- 【2016 Asia China-Final D题】
- RAC 的一些概念性和原理性的知识
- java ear war_[JAVA语法]怎样制作ear,war文件
- P4111 [HEOI2015]小Z的房间
- WordPress 主题教程 #5:主循环
- dsp调音一次多少钱_把手教你调音玩转DSP
- hp1015驱动64位_惠普1015驱动官方下载|
- 十种经典运放电路分析
- 全国计算机二级等级考试评卷,全国计算机等级c语言考试评卷老师是如何阅卷的...
- 打开cmd命令提示不能输入命令
- 2019年了桌面CPU还吊打笔记本CPU?真相了
- 5)自适应滤波(二)[RLS算法]
- 140种Python标准库、第三方库和外部工具
- 正则函数--search/match/findall/sub/split
- 【论文】针对图片过大问题,在不降低图片dpi的情况下缩小图片大小
- k8s 配置 Secret 集成Harbor
- 英文文献的阅读翻译神器
- (附源码)springboot奖助学金评审系统 毕业设计 031035
- saltstack安装 [一]
- Python图片处理模块PIL操作方法(pillow)(转载)
热门文章
- 都2021年了,不会还有人连深度学习还不了解吧(六)-- Padding篇
- 图像和流媒体 -- 详解YUV数据格式
- Hi3516A开发--mpp业务分析
- Judges' Time Calculation
- linux命令修改管理员时间,Linux管理员必须知道的sudo命令
- 在深度神经网络中你有多吸引人?
- 用 Go 构建一个区块链 -- Part 3: 持久化和命令行接口
- 树莓派linux系统识别u盘启动,树莓派Raspberry Pi实战之命令行下实现USB存储设备自动挂载...
- python监控进程状态_python监控进程脚本
- 打开指定摄像头_我在无人区深处,遇到了一个高清摄像头