jsp中的request.getContextPath()
<%=request.getContextPath()%>是為了解決相對路徑的問題,可返回站點的根路徑。
但不用也可以吧,比如<a href="<%=request.getContextPath()%>/catalog.jsp">我就直接用<a href="catalog.jsp">也行啊,這兩個文件是在同一個目錄下的
比如你要生成一個文件放在服務器上得一個目錄下,你可以使用request.getContextPath()+/dir,組成一個完整得目錄結構!
但在JSP文件里,通過request.getContextPath()得到的路徑卻為空,為什么?
你在context中沒有配置path屬性,所以你的工程文件就是在根目錄下,相當于path="";即是你直接在 瀏覽器中輸入你的服務器ip就會到你的jsp頁面,而不是tomcat的默認頁面;所以你通過request.getContextPath()得到的字 符串是為空的;它是獲得虛目錄的;如果你想得到工程文件的實際物理路徑,可通過:<%=request.getRealPath("/")%>,這樣頁面就會輸出:d:/web
request.getScheme();返回的協議名稱,默認是http
request.getServerName()返回的是你瀏覽器中顯示的主機名,你自己試一下就知道了
getServerPort()獲取服務器端口號
假定你的web application 名稱為news,你在瀏覽器中輸入請求路徑:
http://localhost:8080/news/main/list.jsp
則執行下面向行代碼后打印出如下結果:
1、 System.out.PRintln(request.getContextPath());
打印結果:/news 2、System.out.println(request.getServletPath());
打印結果:/main/list.jsp3、 System.out.println(request.getRequestURI());
打印結果:/news/main/list.jsp4、 System.out.println(request.getRealPath("/"));
打印結果:F:/Tomcat 6.0/webapps/news/test
通常在JSP頁面開通有如下代碼:
<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>這段代碼的意思是獲取當前項目的路徑,如:http://localhost:8080/項目名稱。
在<head></head>中通常有如下代碼:
<base href="<%=basePath%>">這是設置基礎路徑的,basePath為變量,簡單的靜態網頁的話你設置比如:<base href="http://www.baidu.com">,那你下面的href屬性就會以你上面設的為基準,如:<a href="http://www.baidu.com/xxx.htm"></a>你現在就只需要寫<a href="xxx.htm"></a>
我們先來看項目這樣一個應用
我們在index.jsp中想要引入Scripts,CSS包中的文件,怎么辦,為了避免復雜的相對路徑,公司一般采用絕對路徑,來看代碼:
<link rel='Stylesheet' href='${pageContext.request.contextPath }/css/index.css' /><script src='${pageContext.request.contextPath }/Scripts/Utility.js'
type='text/javascript'></script>
簡單吧。
新聞熱點
疑難解答