您的位置:首页 > 理论基础 > 计算机网络

常用网络协议端口号,常见路由协议端口号、协议号、组播地址

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都会生成新的令牌,刷新时的令牌值是旧的令牌值,不是最新的令牌值。

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: