java - Servlet 上下文 URL

标签 java servlets jboss5.x

我部署了一场名为 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/

    相关文章:

    使用 ganymed-ssh2 将 java scp 文件发送到远程

    java - 如何在java web项目中配置自定义日志文件

    java - 从单元测试连接时,HSQL 立即关闭连接

    java - 使用 Java 9 和 Java 10 从 Eclipse 上的 Tomcat 中删除 java.endorsed.dirs

    java - 使用 Java GregorianCalendar 类打印正确的日期

    java - Apache POI Servlet 表已存在

    java - 在8843端口启动Jboss服务器5.x

    java - 如何使用 Swings 将图像添加到 Menuitem

    java - TomCat - 构造函数在尝试从文件中读取时抛出异常

    java - httpclient 4如何获取字节