今天上班时,突然想到这个问题,网上查了些资料,自己也琢磨了下,找到一个解决的办法。如下:
在生成提交页面的jsp中,给session中添加一个对象M。在提交以后,action中判断session中是否存在M这个对象,如果存在,则进行正当的提交行为,并且,把session中的M对象删除掉。这时,如果用户在页面上浏览器中按了后退按钮,会返回刚才提交的页面,但是只是在缓存中的静态页面,session中不会再添加M对象,所以,如果再次提交,那么在后台的action,会判断出session中的M对象为空,那么就返回错误页面即可。
注:也可以在进行提交页转发的action中进行session的设值。
以下是简单的核心代码:
jsp中:
<% String mn = Math.random()+""; //mn可以是任意对象。 session.setAttribute("mn",mn); %>
action中:
HttpServletRequest request = ServletActionContext.getRequest (); HttpSession session = request.getSession(); Object obj = session.getAttribute("mn"); if(obj==null){ //返回错误页面。 }else{ session.setAttribute("mn", null); //这里执行正常的提交业务 }