struts中处理表单重复提交:
* 表单重复提交的原理
* 在显示 添加员工信息的页面add.jsp的时候,要产生一个唯一字符串(asfhkldjddidjkd68244554kkjjj)
* 在添加员工信息的页面add.jsp 增加一个隐藏域
<input type="hidden" name="token.html" value="asfhkldjddidjkd68244554kkjjj" />
* 把该字符串session中也放一份
session.setAttribute("token.key","asfhkldjddidjkd68244554kkjjj");
* 当提交表单时.提交给Servlet和struts的action时.
* 获取表单的信息 封装到javaBean中 Emp emp=new Emp();
* 处理表单重复提交
* 获取session中存放的"token.key对应的值 asfhkldjddidjkd68244554kkjjj
"session存放的值"= session.getAttribute("token.key");
* 获取add.jsp页面中隐藏域的值
<input type="hidden" name="token.html" value="asfhkldjddidjkd68244554kkjjj" />
"隐藏域的值"=request.getParameter("token.html");
* "session存放的值"和"隐藏域的值"相比较
* 如果相同
* 从session中删除token.key的值
session.removeAttribute("token.key");
* 实例化Dao层的对象或业务层的对象,这里以dao层为例
EmpDao empDao=new EmpDaoImpl();
* 调用empDao层的方法保存数据到数据库中
* 如果不相同
* 表单重复提交了
在进入需要防止重复提交的页面的action中
this.saveToken(request);
在提交表单页面给某一个的action中
if(this.isTokenValid(request)){
System.out.println("不是重复提交");
this.resetToken(request);
}else{
System.out.println("重复提交了");
}