我正在开发一个项目,我在战争中运行servlet,侦听请求并在单独的页面上填充外部div。向servlet(a)发出初始请求,如果有要显示的数据,则呈现该HTML。如果没有数据,它会将查询字符串传递给另一个servlet来处理请求,然后呈现一个包含选项的页面。
我正在使用Windows Server 2008运行Tomcat 6.
但我遇到两个问题:
确保我可以使用第一个servlet中的响应对象从初始servlet调用“重定向”到另一个servlet的最佳实践是什么?
答案 0 :(得分:2)
重定向返回HTTP 302响应,其中包含客户端需要处理的Location
标头中的新URL。基本上,您的JS代码必须检查响应状态代码(如果它是302),然后提取Location
标头,然后在其上重新发送新请求。重复此操作,直到响应状态代码为200.
在浏览器的地址栏中粘贴URL时,它的作用是因为浏览器已经知道如何正确处理3nn响应。如果您在浏览器的webdeveloper工具集中打开网络流量跟踪器,那么您将看到在新URL上触发了第二个GET请求。
另一种方法是,如果servlet在同一个容器中运行,只需使用RequestDispatcher#forward()
而不是HttpServletResponse#sendRedirect()
。