我在JBoss AS中部署了名为test
的战争。
当我进入浏览器并输入网址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以在其中包含test(现在url看起来像http://localhost:8080/test/main/jsp/MFrame.jsp?sid=13045798560
),页面成功渲染。
我的问题是为什么上下文test
没有进入网址,因为它是上下文根。
答案 0 :(得分:3)
重定向是网络服务器亲属。因此,如果您有.sendRedirect("/main/jsp/MFrame.jsp")
,则将省略上下文路径。那是因为重定向是一个HTTP概念,它们发生在浏览器中(它们被称为客户端重定向)
您有几个选择:
req.getRequestDispatcher("/main/jsp/MFrame.jsp").forward(req, res);
- 这将触发服务器端重定向,并且它是上下文相关的request.getContextPath()
)