gpt4 book ai didi

Java servlet - 从子页面转发/重定向

转载 作者:行者123 更新时间:2023-12-02 07:46:53 25 4
gpt4 key购买 nike

我正在开发一个项目,在该项目中,我运行打包在 war 中的 servlet,监听请求并在单独的页面上填充外部 div。向 servlet (a) 发出初始请求,如果有数据要显示,它就会呈现该 HTML。如果没有数据,它会将查询字符串传递给另一个 servlet 来处理请求,然后呈现一个包含可供选择的选项的页面。

我正在 Windows Server 2008 上运行 Tomcat 6。

但是我遇到了两个问题:

  1. 当我使用重定向时,我没有收到来自 servlet 的响应重定向到。我有一些 javascript 警报,但 (b) 从未调用过这些警报
    小服务程序。我正在使用相对路径并确认链接是日志中正确。
  2. 当我在新窗口中复制步骤 1 中的链接时,我看到结果。只是当它嵌入到另一个页面时不会的请求。为什么会这样呢?是否可能是主机页面的限制而无法呈现响应?
  3. 当我使用转发时,我看到 servlet 响应,但随后会打开一个新窗口。从而使人远离原始页面。如果结果在同一页面中呈现,那就太好了。

确保我可以使用第一个 servlet 中的响应对象从初始 servlet 调用“重定向”到另一个 servlet 的最佳实践是什么?

最佳答案

重定向返回一个 HTTP 302 响应,其中包含客户端需要处理的 Location header 中的新 URL。基本上,您的 JS 代码必须检查响应状态代码是否为 302,然后提取 Location header ,然后重新发送新请求。重复此操作,直到响应状态代码为 200。

将 URL 粘贴到浏览器地址栏中时它会起作用,因为浏览器已经知道如何正确处理 3nn 响应。如果您在浏览器的 Web 开发人员工具集中打开网络流量跟踪器,您将看到在新 URL 上触发了第二个 GET 请求。

另一种方法,如果 Servlet 在同一个容器中运行,则仅使用 RequestDispatcher#forward() 而不是 HttpServletResponse#sendRedirect()

关于Java servlet - 从子页面转发/重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10706677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com