一、在表單提交也面:
1)生成一個隨機值(token);
String tokenValue = new Date().getTime()+" ";
2)將token值放入到Session屬性中;
session.setAttribute("token",tokenValue);
3)將token值放入到隱藏域的value中;
<input type="hidden" name="token" value="<%=tokenValue%>" />
二、在Servlet接受頁面:
1)獲取Session和隱藏域中的token值;
HttpSession session = request.getSession();
Object token = session.getAttribute("token");
String tokenValue = request.getParameter("token");
2)比較兩個值時候一致:若一致,受理請求,且把Session域中的token屬性清除;若不一致,則直接相應提示頁面“重複提交”;
if(token != null && token.equals(tokenValue){
session.removeAttribute("token");
}else{
response.sendRedirect(request.getContextPath()+"/token/token.jsp");
return;
}
總體思路:產生一個隨機值,分別給Session和表單值,同時提交給Servlet;
servlet判斷是否是首次提交,如果是,清楚Session值,表示提交成功;如果第二次提交,Session中就沒有值,所以判斷爲假,則提示重複提交。