gpt4 book ai didi

java - Servlet 上下文 URL

转载 作者:行者123 更新时间:2023-12-04 06:27:17 27 4
gpt4 key购买 nike

我部署了一场名为 test 的 war 在 JBoss AS 中。

当我进入浏览器并输入网址时 http://localhost:8080/test , 我得到了 login.jsp页面,这是欢迎页面。

当我点击提交按钮时,会调用一个 servlet 名称 CheckLoginServlet ( onSubmit 我已重定向到 /test/servlet/CheckLoginServlet )。成功登录后,此 servlet 重定向到位于 MFrame.jsp 内的 jsp ( docroot/main/jsp )。 .网址如下所示 http://localhost:8080/main/jsp/MFrame.jsp?sid=13045798560 ,然后我收到 404 错误。

原因是 url 不包括上下文 test ,现在当我显式修改浏览器中的 url 以在其中包含测试时(现在 url 看起来像 http://localhost:8080/test/main/jsp/MFrame.jsp?sid=13045798560),页面成功呈现。

我的问题是为什么上下文 test不在 url 中,因为它是上下文根。

最佳答案

重定向是 Web 服务器的亲戚。所以如果你有 .sendRedirect("/main/jsp/MFrame.jsp") ,上下文路径将被省略。那是因为重定向是一个 HTTP 概念,它们发生在浏览器中(它们被称为客户端重定向)

你有几个选择:

  • 向前使用 - req.getRequestDispatcher("/main/jsp/MFrame.jsp").forward(req, res); - 这将触发服务器端重定向,并且它是上下文相关的
  • 将上下文附加到重定向 url ( request.getContextPath() )
  • 在重定向中使用相对路径
  • 关于java - Servlet 上下文 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5895309/

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