Tag <c:out> (JSTL Core) แสดงผลลัพธ์ของ expression คล้าย <%= %> แต่มีข้อได้เปรียบ:
- ใช้ dot notation เข้าถึง property ได้ง่าย (
customer.address.street) - Escape XML characters อัตโนมัติ (ป้องกัน XSS)
Attributes
| Attribute | คำอธิบาย | Required | Default |
|---|---|---|---|
| value | ข้อมูลที่จะแสดง | Yes | - |
| default | ค่า fallback ถ้า value เป็น null/empty | No | body |
| escapeXml | true/false - escape XML chars หรือไม่ | No | true |
ตัวอย่าง
<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head><title><c:out> Example</title></head>
<body>
<!-- Escape XML tags อัตโนมัติ -->
<c:out value="${'<tag> , &'}" />
<br/>
<!-- ใช้ dot notation -->
<c:out value="${user.address.city}" />
<br/>
<!-- default value -->
<c:out value="${emptyParam}" default="N/A" />
</body>
</html>
ผลลัพธ์
<tag> , & Bangkok N/A
เปรียบเทียบ <c:out> vs <%= %>
| คุณสมบัติ | <c:out> | <%= %> |
|---|---|---|
| Auto XML escape | ใช่ (default) | ไม่ |
| Dot notation | ใช่ (EL) | ไม่ (ต้องเขียน Java) |
| Default value | รองรับ (default attr) | ต้องเขียน ternary |
| Null handling | ปลอดภัย | พิมพ์ "null" |
แนะนำ: ใช้ <c:out> สำหรับแสดงข้อมูลผู้ใช้ (user input) เพื่อป้องกัน XSS