坑比Window。window分隔符 用\;unix採用/。因而用File.separator來跨平臺
請注意:這是文件路徑。在File f = new File(「c:\\hah.txt」)是好使的
當在後臺拼接js代碼
代碼大致以下:
String path = "\haha\test";
js+="<img src=\""+path+"\">"
採用window的分隔符,\ 傳到前臺發現分隔符不見了
可是/是能夠的css
先說一下,服務器路徑。通常拿tomcat做爲中間件
而web程序通常部署到 (前邊是tomcat路徑,最後portal就是引用程序部署文件夾)
C:\LEADERHOO\apache-tomcat-6.0.35\apache-tomcat-6.0.35 -IPORTAL\wtpwebapps\PORTAL
此路徑下通常是 :
第一部分:對應eclipse裏邊src/main/webapp
第二部分:eclipse看不到的(隱藏的)META-INF
第三部分(可能會有的):有一些資源文件好比圖片等,上傳到服務器能夠傳到該目錄下
此路徑下能夠經過web項目的url訪問
好比在該目錄下,我建了一個a.txt,我能夠直接用http://boc.dtsz.com:8086/sso/a.txt訪問到
或者建目錄訪問 http://boc.dtsz.com:8086/sso/testfolder/a.txt
備註 此處存在一個很是坑爹的設定
中文目錄竟然很差使
http://boc.dtsz.com:8086/sso/testfolder/測試中文目錄/a.txtweb
頁面上圖片路徑(\或者是/或者是\\\\ 根據具體例子測試)
相對路徑 ..\newHaha
絕對路徑 c:\test\haha
相對路徑必定注意前邊 是否須要 ..\ 也就是是否能準肯定位到文件apache
<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> 就可使用絕對路徑 <link href="<%=basePath %>companyStyle/css/base.css" rel="stylesheet">
通俗的講,有/會從跟目錄開始算,沒有會從當前目錄開始算瀏覽器
好比<link src = "/demo.js"/> 設當前項目根路徑是 「localhost:8081/sso」則此路徑會定位到 localhost:8081/sso/demo.jstomcat
web-inf下,應用服務器把它指爲禁訪目錄,即直接在瀏覽器裏是不能訪問到的,只能經過servlet訪問 因此:
web-inf下有a.jsp則能夠用request.getRequestDispatcher("/WEB-INF/a.jsp").forward(request,response);進行派遣訪問服務器
可是web-inf下有a.htm,則用request.getRequestDispatcher("/WEB-INF/a.htm").forward(request,response);就不能訪問。 app
請注意:
此處和訪問路徑區分開,這不是訪問路徑,這是告訴jsp翻譯的時候把這個地方的文件加進來
涉及的細節點就是 jsp會翻譯成servlet
jsp頁面不能原封不動地被傳送給瀏覽器,全部的jsp元素都必須首先由服務器進行處理。這是經過將jsp頁面轉達化成servlet,而後執行這個servlet來完成的
jsp容器:
jsp容器一般以servlet的形式來實現,這個servlet通過配置,能夠處理對jsp頁面的全部請求
jsp的翻譯:
Jsp容器負責將jsp頁面轉化成servlet(稱爲jsp頁面實現類?JSP Page implementation class),並編譯這個servlet
因此:用 <%@ include%>會在翻譯的時候把文件加進來而不是訪問該文件
再次加深一下,爲何翻譯的時候能夠經過/WEB-INF/找到文件
參照整理2,WEB-INF 在tomcat服務器的程序包的能夠直接訪問的那一級別
這個uri是能夠定位一個文件,只不過tomcat不容許直接經過瀏覽器訪問而已eclipse
參考資料: http://blog.csdn.net/panyongcsd/article/details/38235713webapp