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