2013-11-23 68 views

回答

7

是的,這是一個很好的做法。該標籤是一個Spring JSP標籤,用於創建帶有JSTL c:url增強功能的URL。 <c:url>標記用於創建一個url,當客戶端關閉cookie時,這將有所幫助,並且您需要重寫將從jsp頁面返回的URL。 重寫的URL將對會話ID進行編碼(如有必要)以提供持久會話。

例如,您的網址將顯示爲:

<c:url value="a.jsp"> 

/context/a.jsp // when cookies is enabled 
/context/a.jsp;jsessionid=B01F432.... // when cookie is disabled 

這樣,servlet容器可以跟蹤用戶的請求。另一個重要的事情是c:url將作爲上下文根的前綴,所以你不需要在任何地方編寫根上下文前綴。

就像我說的,<spring:url>包含一些比JSTL更好的編碼URI模板變量。

<spring:url value="/url/path/{variableName}"> 
    <spring:param name="variableName" value="more than JSTL c:url" /> 
</spring:url> 

結果:/ currentApplicationContext/URL /路徑/多個%20than%20JSTL%20C%3Aurl

見這裏更多的細節:http://docs.spring.io/spring/docs/3.1.4.RELEASE/javadoc-api/org/springframework/web/servlet/tags/UrlTag.html

+0

感謝您的答覆盧卡斯,我只有一個懷疑如果會話未被創建,我該如何訪問該應用的索引頁面。在這種情況下,spring:url標記將返回什麼。 – underdog

+1

當您請求*第一次*您的鏈接與c:url標記將被重寫添加jsessionid參數。此時服務器不確定客戶端是否支持cookie,因此它會生成一個cookie以及URL上的jsessionid。 –