2011-05-05 72 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