問題:使用servlet,如何處理在多重路徑頁面跳轉中servlet轉寄頁面樣式丟失問題。(例如訪問 http://localhost/project/listUser.action後轉到http://localhost/project/user /listUser.jsp,這時候瀏覽器還是停留在http://localhost/project/addUser.action。這時候jsp原來的圖片定位可能就都出錯了)
而解決jsp的路徑問題,我覺得以下方式就基本完美了(有問題,請各位前輩指出):
首先推薦一個更自然的辦法,可以使得原來用相對路徑定位的jsp繼續可用,不必逐個修改連結(個人推薦):
第一步:在jsp的head中添加base標籤和一段java,但把getContextPath改為getRequestURI 協助
jsp檔案
1 2 3 4 5 6 7 |
<% String path = request.getRequestURI(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path; %> < base href="<%=basePath%>"> |
注意是request.getRequestURI,這樣擷取出來的正好就是jsp的絕對路徑。
例如瀏覽器地址欄是:http://localhost:8084/project/listUser.action
base是
第二步:jsp頁面內,全部使用相對路徑訪問。
第三步,就不必管action的路徑如何了。
這個方法,可以相容使用action和不使用action兩種情況。 第二種方法:
第一步:在jsp的head中添加base標籤和一段java 協助
jsp檔案
1 2 3 4 5 6 7 |
<% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> < base |