Servlet上下文URL

时间:2011-05-05 09:18:03

标签: java servlets jboss5.x

我在JBoss AS中部署了名为test的战争。

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

当我点击提交按钮时,servlet会被调用名称CheckLoginServletonSubmit我已重定向到/test/servlet/CheckLoginServlet)。成功登录后,此servlet将重定向到MFrame.jsp内的jsp(docroot/main/jsp)。网址看起来像http://localhost:8080/main/jsp/MFrame.jsp?sid=13045798560,我收到404错误。

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

我的问题是为什么上下文test没有进入网址,因为它是上下文根。

1 个答案:

答案 0 :(得分:3)

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

您有几个选择:

  • use forward - req.getRequestDispatcher("/main/jsp/MFrame.jsp").forward(req, res); - 这将触发服务器端重定向,并且它是上下文相关的
  • 将上下文附加到重定向网址(request.getContextPath()
  • 在重定向中使用相对路径