该场景是这样的,我接受来自用户在网页上的unicode字符串,并且在点击提交按钮时控件移动到下一页,其中处理字符串的完整逻辑同时使用bean类编写我通过从bean类内部调用DAO类的函数将字符串插入到数据库中,以便维护日志。
问题是,当用户刷新结果页面时,会反复调用bean类,因此同一个用户会多次将相同的字符串插入数据库。
我该怎么办,只有当用户在刷新结果页面时没有按下提交按钮时,同一用户插入的字符串才会被插入到数据库中。 或者我应该使用字符串作为来自用户的值来维护cookie,并在页面加载时进行检查。
我正在尝试在客户端维护用户先前输入的字符串并相应地检查它
private void fnSetCookieValues(HttpServletRequest request,
HttpServletResponse response) {
Cookie[] cookies=request.getCookies();
for (int i = 0; i < cookies.length; i++) {
System.out.println("" + cookies.length + "Name" + cookies[i].getName());
if(cookies[i].getName().equals("DNString")) {
System.out.println("Inside if:: " + cookies[i].getValue() +
"" + cookies.length);
cookies[i].setValue(request.getParameter("txtString"));
} else {
Cookie ck = new Cookie("DNString", ";");
response.addCookie(ck);
}
}
}
这段代码是用servlet编写的,在提交按钮点击时调用 但是这个servlet的每个处理都显示 1NameJSESSIONID 它没有显示cookie DNString
有人可以弄清楚我在做什么错吗?
答案 0 :(得分:0)
您正在研究防止双重提交的方法吗? 根据您的安全需求和您使用的框架,有几种方法:
谢谢, 中号
答案 1 :(得分:0)
检查数据是否已输入是不好的方法。
因此,解决此问题的一个简单方法是在servlet
提交表单后使用HTTP重定向。让我们说success.jsp
。因此,表格不会再次提交。
您还可以在收到回复后重置表单。