2011-05-05 50 views
2

我在JBoss AS中部署了一场名为test的战争。Servlet上下文URL

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

当我点击提交按钮时,一个servlet被调用名称CheckLoginServletonSubmit我已重定向到/test/servlet/CheckLoginServlet)。成功登录后,此servlet将重定向到位于docroot/main/jsp内的jsp(MFrame.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,因为它是上下文根。

+0

request.getContextPath()

  • 使用相对路径,你怎么样来重定向到'MFrame.jsp'?你的代码是什么样的? – skaffman 2011-05-05 16:49:51

  • 回答

    3

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

    你有两个选择:

    • 利用远期 - req.getRequestDispatcher("/main/jsp/MFrame.jsp").forward(req, res); - 这将触发一个服务器 - 端的重定向,并且它是上下文相关
    • 追加上下文重定向URL在重定向
    +0

    'response.sendRedirect(request.getContextPath()+“/errors/401.html”);' – shareef 2017-01-29 20:16:02