<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