2008-11-14 57 views
100

Viết trang JSP, chính xác những gì <c:out> làm gì? Tôi đã nhận thấy rằng cả hai đều có cùng kết quả:JSP: JSTL của <c:out> thẻ

<p>The person's name is <c:out value="${person.name}" /></p> 
<p>The person's name is ${person.name}</p> 

Trả lời

144

c:out thoát các ký tự HTML để bạn có thể tránh việc tạo mã cross-site.

nếu person.name = <script>alert("Yo")</script>

kịch bản sẽ được thực hiện trong trường hợp thứ hai, nhưng không phải khi sử dụng c:out

+1

Chỉ khi 'escapeXML' được đặt thành true (không chắc chắn là theo mặc định) –

+16

Tôi tin rằng điều này là đúng theo mặc định. –

+7

N.B. nó thoát XML không phải HTML. Một trong những sự tinh tế khó chịu hơn của JSTL. Cuối cùng tôi luôn viết HTML của riêng mình EL fn. –

3

Phiên bản cũ hơn của JSP không hỗ trợ cú pháp thứ hai.

+0

Tại sao bạn nên downvote? – Thilo

116

Như đã nói Will Wagner, trong phiên bản cũ của jsp bạn nên luôn luôn sử dụng c:out để văn bản động đầu ra.

Hơn nữa, sử dụng cú pháp sau:

<c:out value="${person.name}">No name</c:out> 

bạn có thể hiển thị dòng chữ "Không có tên" khi tên là null.

+22

Cool! Tôi không biết điều đó. –

+0

Đồng ý, tuyệt vời. Cảm ơn bạn đã giảng dạy và giúp đỡ. Tôi cũng không biết điều đó. Chúc mừng! –

+18

hoặc gmustudent

5

Bạn rõ ràng có thể bật thoát của các thực thể Xml bằng cách sử dụng giá trị escapeXml thuộc tính bằng true. FYI, theo mặc định là "true".

+0

Một số mã ví dụ sẽ thực sự giúp hoàn thành câu trả lời này. – RachelC

Các vấn đề liên quan