情况是这样的:
做的一个有定制功能的网站,定制页面是customize.jsp,里面语句是:<form action="custom_manage.jsp" method="post">,在这里面填写定制信息后提交到custom_manage.jsp页面,在这个页面里把定制的内容存入数据库,然后转向定制后的主页面main.jsp。
问题是在custom_manage.jsp中数据库逻辑处理完后通过<jsp:forward page="main.jsp"/>转到main.jsp页面,但网页的url没有改变,仍然是http://localhost:8080/ChargeCustom/custom_manage.jsp,其中ChargeCustom是项目名。这样就有一个问题,每次刷新一下这个界面就会重新执行custom_manage.jsp中的数据库操作,就会往数据库里添加重复的内容。
问各位大虾,怎么样能改变下网页的url,使得每次跳转到main.jsp页面后url就能变成http://localhost:8080/ChargeCustom/main.jsp啊?
------解决方案--------------------------------------------------------
jsp:forward 是服务器端页面重定向,所以浏览器根本不知道已经发生了页面跳转。
你想要页面跳转的话,得用用浏览器端重定向(HTTP 302),也就是要把新的页面地址发送给浏览器,然后浏览器重新请求这个新的页面:
<% response.sendRedirect("xxoo.jsp"); %>
但是这种情况下,xxoo.jsp无法再操作request.getAttribute,因为已经是一次全新的请求了。