常用网络协议端口号,常见路由协议端口号、协议号、组播地址
2014-03-14 10:55
447 查看
参考struts的token(令牌)机制
在提交的时候在Servlet中根据用户的sessionid和当前时间的long值生成一个令牌(每次提交都会生成一个新令牌),将令牌保存在该用户的会话中,并将令牌的值以request属性形式传到前端页面,在前端页面的form中增加传递令牌的隐藏域<input type="hidden" name="clientToken" value="<%=clientToken%>" />,提交form的时候,也会将clientToken传入Servlet,如果session中保存的令牌值与传入的不同,则是重复提交,因为每次请求Servlet都会生成新的令牌,刷新时的令牌值是旧的令牌值,不是最新的令牌值。
在提交的时候在Servlet中根据用户的sessionid和当前时间的long值生成一个令牌(每次提交都会生成一个新令牌),将令牌保存在该用户的会话中,并将令牌的值以request属性形式传到前端页面,在前端页面的form中增加传递令牌的隐藏域<input type="hidden" name="clientToken" value="<%=clientToken%>" />,提交form的时候,也会将clientToken传入Servlet,如果session中保存的令牌值与传入的不同,则是重复提交,因为每次请求Servlet都会生成新的令牌,刷新时的令牌值是旧的令牌值,不是最新的令牌值。
jsp: <% //获取令牌、防止刷新重复提交 String clientToken = (String)request.getSession().getAttribute("clientToken"); clientToken = (StringUtils.isEmpty(clientToken)) ? "" : clientToken; %> <form>中增加<input type="hidden" name="clientToken" value="<%=clientToken%>" /> java: /** * 令牌验证防止刷新提交 */ private String clientToken; /** * 验证防止刷新重复提交 * @return */ private boolean validateToken() { boolean bl = false; try { String sessionToken = (String) getHttpRequest().getSession().getAttribute( "token"); if (StringUtils.isNotEmpty(sessionToken) && !clientToken.equals(sessionToken)) { // 禁止刷新 bl = false; } else { // 正常的操作 bl = true; // 生成新令牌 String sToken = UUID.randomUUID().toString().toUpperCase(); getHttpRequest().getSession().setAttribute("clientToken", sToken); // 替换旧令牌 getHttpRequest().getSession().setAttribute("token", sToken); } } catch (Exception e) { LOGGER.error(e.getMessage()); } return bl; }
相关文章推荐
- iOS开发之网络编程:常用网络协议
- 网络常见协议简介
- 网络协议常用的端口号
- 网络协议补充-GET/POST区别、常用协议及端口
- 网络中常用协议端口号
- 常用网络通信协议结构图
- 网络常用端口与协议
- 一些常用的软件网络端口协议分类介绍
- 网络扫描技术揭秘读书笔记2--常用的网络编程-其它协议编程
- 常用三个网络协议
- 常用通信网络协议结构图
- 网络常用端口与协议
- 【面试常见问题】网络通信 - TCP协议与UDP协议的区别
- 网络协议常用端口
- Linux 常见的系统管理 + 网络管理 + 常用工具指令(简单的程序安装,如MySQL)
- 常见的网络协议
- 计算机网络常见协议及其格式
- 网络常见的组播地址 解释
- 网络常用协议
- 互联网常用网络协议