c:url標籤

weixin_34391854發表於2018-04-23

<c:url>標籤

 

<c:url>標籤的主要作用是按照特定的重寫規則重新構造URL,它的基本語法為:

 

<c:url   value="原始URL"  var="存放新的URL的命名變數"   scope="{page|request|session|application}" /> 

<c:url>標籤把重新生成的URL存放在var屬性指定的命名變數中,並且scope屬性指定命名變數的範圍,它的預設值為page(頁面範圍)。

 

例如以下<c:url>標籤在頁面範圍內建立一個myurl命名變數,它的值為"dir2/target.jsp":

 

<c:url value="dir2/target.jsp" var="myurl" /> 

例如以下<c:url>標籤中的value屬性以"/"開頭,<c:url>標籤會在重新生成的URL中加上當前Web應用的根路徑,因此myurl命名變數的值為"/helloapp/dir1/dir2/ target.jsp":

 

<c:url value="/dir1/dir2/target.jsp" var="myurl" /> <a href="${myurl}" >target.jsp </a> 

在<c:url>標籤中可以包含<c:param>子標籤,用於設定請求引數,例如以下<c:url>標籤包含兩個<c:param>子標籤,它們分別用於設定username請求引數和description請求引數:

 

<c:url value="/dir1/dir2/target.jsp" var="myurl" >   <c:param name="username" value="Tom" />   <c:param name="description" value="Age>10&Age<30" /> </c:url>  <a href="${myurl}" >target.jsp </a> 

<c:param>標籤會對value屬性中的特殊符號(如">"和"&")進行正確地編碼。以上<a>標記生成的程式碼為:

 

<a href="/helloapp/dir1/dir2/target.jsp?username=Tom&description=  Age%3e10%26Age%3c30"> target.jsp </a> 

從以上程式碼可以看出,description引數值中的">"符號被編碼為"%3e","&"符號被編碼為"%26","<"符號被編碼為"%3c"。

 

<c:param>標籤的name屬性設定請求引數名,value屬性設定請求引數值,此外,也可以在標籤主體內設定請求引數值。例如以下<c:param>標籤主體判斷username命名變數是否為"Tom",如果滿足條件,就把role請求引數設為"Manager";如果username命名變數為空或者不是"Tom",就把role請求引數設為"Employee":

 

<c:url value="/dir1/dir2/target.jsp" var="myurl" >   <c:param name="role">     <c:if test="${username=='Tom'}">       Manager      </c:if>     <c:if test="${empty username || ! username=='Tom'}">       Employee      </c:if>   </c:param> </c:url>  <a href="${myurl}" >target.jsp </a> 

如果username命名變數為空,那麼以上<a>標記生成的程式碼為:

 

<a href="/helloapp/dir1/dir2/target.jsp?role=Employee" >target.jsp </a>

 

 

 

 

來源:https://blog.csdn.net/home_zhang/article/details/8500708