我有一个servlet,它做了一些事情,当它完成后,在请求中放入一些东西,然后调用另一个servlet,后者再调用一个jsp页面。 我写了代码:
第一个servlet(InserisciLezione)
request.getRequestDispatcher("/TakeDates").forward(request, response);
第二个servlet(TakeDates)
RequestDispatcher dispatcher = request
.getRequestDispatcher("GestioneCalendario.jsp");
dispatcher.forward(request, response);
这可以正常工作,但问题是我在页面的网址中还有:
http://localhost:8080/Spinning/InserisciLezione?data=20-02-2013
如果我刷新页面,第一个servlet再次被调用,我不希望这样。 我想要
http://localhost:8080/Spinning/GestioneCalendario.jsp
为什么呢? 提前谢谢!
答案 0 :(得分:2)
如果我的记忆很好(我很长时间没有使用原始servlet),你应该使用重定向而不是前进。
您可以使用response.sendRedirect(url)方法。
干杯,
答案 1 :(得分:2)
您可以使用sendRedirect
代替forward
http
状态代码302,因此浏览器发出新请求。重定向需要从浏览器到服务器再往返一次。 答案 2 :(得分:1)
RequestDispacher接口提供了将请求分派给另一个资源的工具,它可能是html,servlet或jsp。此接口也可用于包含antoher资源的内容。它是servlet协作的一种方式。
在你的情况下,你得到了这个
http://localhost:8080/Spinning/GestioneCalendario.jsp
因为这个servlet
RequestDispatcher dispatcher = request
.getRequestDispatcher("GestioneCalendario.jsp");
dispatcher.forward(request, response);
页面刷新将始终将您重定向到您使用的servlet的URL。它就像召唤ajax事件一样。
无论如何我可以看到你不需要使用forward方法,尝试使用
response.sendRedirect(your_url);