2010-01-18 145 views
3

我將Display.jsp的請求發送到TrialShow.jsp頁面,但是每當我在TrialShow JSP頁面中調用${pageContext.request.requestURL},我都會得到http://localhost:8081/newjsp1/TrialShow.jsp作爲輸出。如何在TrialShow JSP頁面中顯示http://localhost:8081/newjsp1/Display.jsp如何獲取客戶端的url

回答

8

所以你想要一個完整的HTTP請求調用當前頁面的頁面的URL?我認爲沒有前進的方法,因爲你通常不會使用JSP(因爲它可能會產生IllegalStateException: Response already committed),而且對於一個前鋒,你的需求會按照你想要的方式工作。

最簡單的方法和最好的辦法是獲取HTTP Referer標題(是的,包括傳說中的錯字)。你可以在EL中得到它如下:

${header.referer} 

我說「最好的選擇」,因爲客戶端不需要填寫引用標題。大多數瀏覽器都會發送它們,但請記住,這個值可以完全由客戶端控制,因此客戶端(或任何客戶端安裝的軟件,以某些特定的Norton軟件爲例)可以欺騙甚至完全刪除標題值。

一個更可靠的方法是讓原始頁面將其URL作爲(隱藏)請求參數傳遞。例如。

<input type="hidden" name="from" value="${pageContext.request.requestURI}"> 

這種方式是在接下來的頁面訪問由

${param.from} 

我說,「位」,因爲客戶端仍然可以改變它,但現在你不依賴於客戶端的特定環境了。您仍需要記住,您不應將此值用於商業用途。最高可用於統計或調試。

+0

謝謝主席先生非常多的你的幫助。 – Dusk 2010-01-18 22:21:45

+0

不客氣。 – BalusC 2010-01-18 22:22:10

5

使用${requestScope['javax.servlet.forward.request_uri']}

編輯:糾正語法

編輯:這工作,如果你轉發請求到第二個JSP(例如,使用<jsp:forward .../>

+0

我不認爲這裏有任何前鋒的手段。它是JSP - > JSP,而不是JSP - > Servlet - > JSP。如果實際上有一種轉發方式,您可以在請求URL中看到「Display.jsp」的URL! – BalusC 2010-01-18 22:13:12