我實現給定hereSpring的PetClinic <春天:網址...... />編碼非常網址
實施here
在主頁上所有的網址是春天寵物診所示例項目由<spring:url />
標記編碼。我只是想確認一下,編碼鏈接是否是一種很好的編程習慣,即使是春季的簡單導航地址:url標記還是因特定原因而完成?
我實現給定hereSpring的PetClinic <春天:網址...... />編碼非常網址
實施here
在主頁上所有的網址是春天寵物診所示例項目由<spring:url />
標記編碼。我只是想確認一下,編碼鏈接是否是一種很好的編程習慣,即使是春季的簡單導航地址:url標記還是因特定原因而完成?
是的,這是一個很好的做法。該標籤是一個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
感謝您的答覆盧卡斯,我只有一個懷疑如果會話未被創建,我該如何訪問該應用的索引頁面。在這種情況下,spring:url標記將返回什麼。 – underdog
當您請求*第一次*您的鏈接與c:url標記將被重寫添加jsessionid參數。此時服務器不確定客戶端是否支持cookie,因此它會生成一個cookie以及URL上的jsessionid。 –