重定向,請求轉發和jsp等中的路徑問題


jsp中路徑用相對路徑的話jsp文件不能隨便挪動,例如在webContent中直接創建的jsp文件a.jsp挪動到webContent下創建的文件夾a中,那么在a.jsp文件中用<a/>超鏈接訪問webContent中的jsp文件b.jsp就會出現問題,除非刪除a.jsp文件中開始的path和basePath的java代碼塊。

 

    所以說jsp中路徑用相對路徑的話會出現以下問題:

1、資源的位置不能隨意更改;2、需要使用../進行文件夾的跳出,使用比較麻煩;

    推薦使用絕對路徑:因為如果是a.jsp跳轉到b.jsp文件,不管a.jsp變動多少,只要b.jsp的文件路徑不發生變動,絕對路徑就不會出錯,

/項目名稱/你的servlet或者要訪問的jsp

這里的第一個/是代表服務器根目錄,就是相當於localhost:8080

當然如果你的jsp文件是嵌套好幾個文件夾的話,自己酌情添加/直到最后一個的是你需要的訪問,但是當是需要的資源是java文件並且在包下的時候,因為一般都是直接寫簡稱(就是webservlet中的)。

 也有些是這樣寫的(/虛擬項目名/資源名)。總之理解就行。

注意:WebContent和src都算是根目錄一類的,我也說不太清楚,但是希望理解我的意思。

    jsp中有自帶的全局路徑聲明:在jsp的一開始寫有

<% String path=request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/" ;
%>

head中寫有<base href = "<%=basePath%>"

這幾句相當於是絕對路徑,就是已經找到項目了,在路徑中只要寫資源的路徑名稱就行了。

不過還是推薦使用自己會寫絕對路徑,因為在myeclipse中會自動生成那幾句絕對路徑代碼,但是eclipse中不自動生成。

Servlet中的重定向中的絕對路徑和請求轉發中的絕對路徑不太一樣,

請求轉發中的絕對路徑是“/”表示”localhost:8080/projectname(項目名稱)/“

而重定向中的絕對路徑/表示localhost:8080

所以請在項目中注意些。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM