Tag <c:url> (JSTL Core) สร้าง URL string พร้อม encoding และ session tracking (URL rewriting) อัตโนมัติ
Attributes
| Attribute | คำอธิบาย | Required | Default |
|---|---|---|---|
| value | Base URL | Yes | - |
| context | /context-name สำหรับ webapp อื่น | No | Current app |
| var | Variable name เก็บ URL ผลลัพธ์ | No | Print to page |
| scope | Scope ของ var (page/request/session/application) | No | page |
ตัวอย่าง
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<!-- พิมพ์ URL โดยตรง -->
<a href="<c:url value='/jsp/index.htm'/>">Go to Index</a>
<br/>
<!-- เก็บใน variable -->
<c:url value="/search" var="searchUrl">
<c:param name="q" value="java"/>
<c:param name="page" value="1"/>
</c:url>
<a href="${searchUrl}">Search Java</a>
</body>
</html>
ผลลัพธ์ (สมมติ context path = /myapp, มี session)
<a href="/myapp/jsp/index.htm;jsessionid=ABC123">Go to Index</a> <a href="/myapp/search?q=java&page=1;jsessionid=ABC123">Search Java</a>
ข้อได้เปรียบเหนือ response.encodeURL()
-
<1>จัดการพารามิเตอร์ผ่าน
- รองรับ
contextattribute สำหรับ cross-context links - เก็บใน variable ใช้ซ้ำได้ (var + scope)
- Syntax ใกล้เคียง HTML อ่านง่าย
<c:param> อัตโนมัติ (encoding, escaping)
เมื่อไหร่ควรใช้
- สร้าง link ทุกประเภทใน JSP (best practice)
- ต้องการ URL rewriting สำหรับ session tracking
- สร้าง URL พร้อม query parameters หลายตัว