JSP JSTL <c:url>標籤:生成URL地址標籤

2020-07-16 10:04:55
<c:url> 標籤用於生成一個 URL 路徑的字串,這個生成的字串可以賦予 HTML 的 <a> 標記實現 URL 的連線,或者用這個生成的 URL 字串實現網頁轉發與重定向等。在使用該標籤生成 URL 時還可以搭配 <c:param> 標籤動態新增URL的引數資訊。

語法:

<c:url value="url"[var="name"][scope="page|request|session|application"][context="context"]/>

語法格式一:

將輸出產生的 URL 字串資訊,如果指定了 var 和 scope 屬性,相應的 URL 資訊就不再輸出,而是儲存在變數中以備後用。

<c:url value="url" var="name"][scope="page|request|session|application"][context="context"]>
  <c:param>
</c:url>

語法格式二:

不僅實現了語法格式一的功能,而且還可以搭配 <c:param> 標籤完成帶引數的複雜 URL 資訊。

這兩種語法格式中涉及的屬性說明如表所示。

<c:url>標籤屬性
屬性 型別 描述 參照 EL
url String 生成的URL路徑資訊 可以
context String 上下文路徑,用於存取同一個伺服器的其他Web工程,其值必須以“/”開頭,如果指定了該屬性,那麼url屬性值也必須一“/”開頭 可以
var String 變數名稱,將獲取的資源儲存在變數中 不可以
scope String 變數的存在範圍 不可以
context String url屬性的相對路徑 可以

範例

將 Tomcat 的 URL 路徑 "http://localhost:8080" 客製化到標籤的 url 變數中,這個變數存在於 session 範圍內。另外還結合 <c:param> 標籤動態生成 3 個 URL 的引數資訊,這 3 個引數資訊分別是當前時間的時、分、秒。
<%@page import="java.util.*"%>
  <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <c:set var="time" value="<%=new Date()%>"/>
    <c:url value="http://localhost:8080" var="url" scope="session">
      <c:param name="Hours" value="${time.hours}"/>
      <c:param name="Minutes" value="${time.minutes}"/>
      <c:param name="Seconds" value="${time.seconds}"/>
    </c:url>
    <a href=${url}>用產生的URL路徑作為超連結的引數</a>
  %>
執行結果在瀏覽器的位址列中可以看到傳遞的引數,結果如下:

http://localhost:8080/?Hours=168&Minutes=21&Seconds=57