三句java語句連接到jsp文件的作用

jsp頁面中有三句java代碼,使用和不使用的區別很大,使用過後會有什麼不同尼?請看下面詳細分析。


這是我寫的一個jsp頁面中一段代碼,分析其中三句java語言。

一、<% String path = request.getContextPath();%>jsp裏面用到意思是:

1. request.getContextPath() 獲得當前的項目根目錄路徑,假設項目名爲library,那麼獲得的地址就是http://localhost:8080/library/;
2.聲明一個字符串變量path;

3.將當前項目的根目錄複製給變量path。

request.getContextPath()是在開發web項目時,經常用到的方法,其作用是獲取當前系統路徑。

當使用Tomcat作爲web服務器時,項目一般部署在tomcat下的webapps的目錄下,具體來說有兩種部署路徑:

一是將web項目中的webRoot下的文件直接拷貝到webapps/ROOT下,刪除ROOT下的原文件。

二是在tomcat下的webapps中創建以項目名稱命名的文件夾(或者也可以自行命名),並將webRoot下的文件直接拷貝到該文件夾下。

方法一中request.getContextPath()的返回值爲空,即“”,中間無空格,區分null;

方法二中其返回值爲:/[創建的文件夾的名稱]。

二、<% String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %>在裏面的意思是:

將“項目路徑basePath”放入pageContext中

另外,對於SmartUpload.downloadfile()方法,其文件名參數中的路徑部分是一個相對路徑,並不包含由request.getContextPath()函數讀取的部分,而僅僅包含該路徑下的路徑。

getContextPath效果:

path IS: /jspSmartUpLoad

basePath IS:http://localhost:8080/jspSmartUpLoad/

request.getScheme() IS:http

request.getServerName() IS:localhost

request.getServerPort() IS:8080

三、<%=basePath%>

base標記是一個基鏈接標記,是一個單標記。用以改變文件中所有連結標記的參數內定值。它只能應用於標記<head>與</head>之間。

你網頁上的所有相對路徑在鏈接時都將在前面加上基鏈接指向的地址。

base 元素可規定頁面中所有鏈接的基準 URL

我們可以使用 <base>標籤中的href屬性來設置,所有的“相對基準 URL”。如下代碼段:

<html><head>

<base href="<%=basePath%>">

</head>

<a href="jsp/login.jsp">login</a>

</html>

base只能應用於標記<head></head>之間,後面就可以直接使用相對路徑(即相對於base標籤),如<a href="jsp/login.jsp">login</a>。

這是設置基礎路徑的basepath爲變量

簡單的靜態網頁的話你設置比如:<base href="http://www.baidu.com">,那你下面的href屬性就會以你上面設的爲基準,如:<a href="http://www.baidu.com/xxx.htm"></a>你現在就只需要寫<a href="xxx.htm"></a>

當我們執行上述JSP後,所返回的html代碼如下:

<html><head>

<base href="http://localhost:8080/library/">

</head>

//從這以後開始,設置了<base>後,相對路徑就是相對於base中的路徑,而不再是瀏覽器地址的請求路徑。

<a href="jsp/login.jsp">login</a>

</html>

我們可以看到JSP返回的html代碼中,包含了<base href="http:/localhost:8080/library/">的內容。
也就是說在本html代碼中,遇到的所有“相對鏈接”都是相對於base的路徑。

如下圖在開發工具中很好的展示了路徑的變化(我設置的端口號爲80,故沒有顯示端口號):


發佈了38 篇原創文章 · 獲贊 12 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章