一:servlet 可能經常我們需要在servlet中處理一些路徑問題,比如,想得到當前應用中某個檔案的實體路徑,或者需要知道某個請求的具體路徑,這時就需要用到這些方法了。 1:獲得web應用的物理絕對路徑 用到了getServletContext()中的getRealPath ()方法,它能夠返回當前web應用中的某個檔案的物理絕對路徑 String webRealPath=request.getSession().getServletContext().getRealPath("/"); 這裡用“/”,返回的時web應用根目錄的實體路徑,比如我的web應用在本機上的存放位置是 C:\Eclipse\workspace\mynews\MyNews |__WEB-INF |___class |___lib C:\Eclipse\workspace\mynews\MyNews 2:當我在瀏覽器輸入以下請求路徑時http://localhost:8080/mynews/index.jsp 以下各個方法輸出結果如下: request.getContextPath()輸出: /mynews 獲得URI request.getRequestURI()輸出: /mynews/index.jsp 獲得URL request.getRequestURL()輸出: http://localhost:8080/mynews/index.jsp 知道了這幾個方法的不同,就很容易在程式中使用了 二:Jsp中的一些路徑問題 在jsp中可以使用相對路徑,所以很容易出現一些問題 比如我現在有名為path的一個web應用程式,其中的檔案組織圖如下: web |__WEB-INF |__index.jsp |__internal |__internal.jsp 在index.jsp中,有如下串連<a href="internal/internal.jsp">link</a>點擊此串連後會連到如下地址: http://localhost:8080/web/internal/internal.jsp,也就是說,上邊那個串連地址是相對於index.jsp來說的。 當把連結改為<a href="/internal/internal.jsp">link</a>就會發現連結地址變成了如下: http://localhost:8080/internal/internal.jsp也就是說,當加上“/”時,就變成了相對於網站根目錄,而不是相對於web應用程式的根目錄。 同樣我們在internal.jsp中,我們可以使用../index.jsp來連結到index.jsp頁面。 以上原則也適用於在提交表單時action中的路徑問題,無論action轉向的是servlet還是jsp頁面。 END! |