Servlet -- 跳轉到頁面后的絕對路徑與相對路徑的問題


我們在使用servlet或其它框架,從后台跳轉到視圖層的時候。常會遇到這種情況,CSS和JS文件失效了,可是假設通過網址直接訪問JSP是沒問題的。

這就是由於絕對路徑和相對路徑導致的。
絕對路徑。就是我們通過一個完整的地址去訪問,比方http:localhost:8080/program……
相對路徑,比方/program/jsp/a.jsp,這就是想相對路徑。

這里我們來看servlet的兩種跳轉forward和redirect機制,http://blog.csdn.net/gaopeng0071/article/details/9838041


以下引用:http://blog.csdn.net/wym19830218/article/details/5503533/

JSP中用相對路徑引用JS,CSS文件的三種情況
第一種情況 最常見的情況
一個tomcat上都跑多個project, 用project名來區分
由於我的的URL是 :http://localhost/project名 /home/index.jsp
多了一個project名,所以要加 <%=request.getContextPath() %>
如:

寫<%=request.getContextPath() %>太麻煩。能夠在每個jsp文件頂部增加以下內容后,

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

第二, 直接訪問jsp文件
真實項目中, 一個tomcat上要是也跑了多個project, 並用IP來區分
url 是這種: http://localhost/home/index.jsp 注意這里,是直接訪問JSP文件(jsp文件不在web-inf下。能夠直接訪問),不是servlet也不是struts 。
test2.js 與index.jsp 放在同一目錄下。以下用相對路徑來引入JS文件 是OK 的:

index.jsp能夠找到test2.js文件

第三種情況: servlet轉發到jsp(jsp在web-inf下。必須用servlet或action訪問)
在第二情況的基礎上,一個tomcat上要是也跑了多個project, 並用IP來區分。

我們訪問的是servlet 或是struts的action , 再轉發到 index.jsp
url 是: http://localhost/*.do
url 是: http://localhost/index.action
這里不是訪問JSP文件了
以下是OK 的.


免責聲明!

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



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