JSP-Server Response

Dưới đây là các trường Header hữu ích nhất trong phản hồi HTTP 1.1 mà trở lại trình duyệt từ Web Server và bạn sẽ thường xuyên sử dụng chúng trong lập trình web:

HeaderMiêu tả
AllowTrường này xác định các phương thức yêu cầu (GET, POST, .v.v.) mà Server hỗ trợ
Cache-ControlTrường này xác định các hoàn cảnh mà trong đó tài liệu phản hồi có thể được cache một cách an toàn. Nó có thể có các giá trị publicsprivate hoặc no-cache, .v.v.. Trong đó, publics nghĩa là tài liệu có thể được cache, private nghĩa là tài liệu dành cho một người sử dụng và chỉ có thể được lưu giữ riêng (không được chia sẻ) và no-cache nghĩa là tài liệu không bao giờ được cache
ConnectionTrường này chỉ dẫn trình duyệt có sử dụng persistent trong các kết nối HTTP hoặc không. Một giá trị close chỉ rằng trình duyệt không sử dụng các kết nối HTTP dạng persistent và keep-alive nghĩa là sử dụng các kết nối persistent
Content-DispositionTrường này cho bạn yêu cầu rằng trình duyệt hỏi người sử dụng để lưu phản hồi lên địa trong một file với tên đã cho
Content-EncodingTrường này xác định cách mà trang được mã hóa trong khi truyền tải
Content-LanguageTrường này xác định ngôn ngữ mà tài liệu được viết. Ví dụ en, en-us, ru, …
Content-LengthTrường này xác định số byte trong phản hồi. Thông tin này chỉ cần thiết nếu trình duyệt đang sử dụng một kết nối HTTP dạng persistent (giá trị keep-alive)
Content-TypeTrường này kiểu MIME (Multipurpose Internet Mail Extension) của tài liệu phản hồi
ExpiresTrường này xác định thời gian tại đó nội dung nên được xem là hết hạn và không bao giờ được cache nữa
Last-ModifiedTrường này chỉ dẫn khi tài liệu được thay đổi lần cuối. Sau đó Client có thể cache tài liệu này và cung cấp một date bởi một trường yêu cầu If-Modified-Since trong các yêu cầu sau đó
LocationTrường này nên được bao với tất cả phản hồi mà có Status code là 300. Nó thông báo cho trình duyệt về địa chỉ tài liệu. Trình duyệt tự động kết nối lại tới vị trí này và thu nhận tài liệu mới
RefreshTrường này xác định khi nào trình duyệt nên đề nghị một trang đã được update. Bạn có thể xác định thời gian với đơn vị là số giây sau đó một trang sẽ được refresh
Retry-AfterTrường này có thể được sử dụng khi kết hợp với phản hồi 503 (Service Unavailable) để nói cho Client khi nào thì nó có thể lặp lại yêu cầu
Set-CookieTrường này xác định một cookie mà liên kết với trang

Đối tượng HttpServletResponse trong JSP

Đối tượng response là một minh họa của đối tượng javax.servlet.http.HttpServletResponse. Ngay khi Server tạo đối tượng request, nó cũng tạo một đối tượng để biểu diễn phản hồi tới Client.

Đối tượng Response cũng định nghĩa các Interface mà thực hiện việc tạo các HTTP header mới. Thông qua đối tượng này, lập trình viên JSP có thể thêm các Cookie mới hoặc Date, HTTP Status code, …

Dưới đây là các phương thức có thể được sử dụng để thiết lập HTTP response Header trong chương trình JSP của bạn. Những phương thức này có sẵn với đối tượng HttpServletResponse mà biểu diễn Server Response.

STTPhương thức và Miêu tả
1String encodeRedirectURL(String url)Mã hóa URL đã cho để sử dụng trong phương thức sendRederect, hoặc nếu mã hóa này không được đòi hỏi, thì trả về URL như cũ
2String encodeURL(String url)Mã hóa URL đã cho bằng việc thêm ID của session trong nó, hoặc nếu mã hóa này không được đòi hỏi, thì trả về URL như cũ
3boolean containsHeader(String name)Trả về một Boolean chỉ rằng có hay không header phản hồi với tên đã cho đã được thiết lập
4boolean isCommitted()Trả về một Boolean chỉ rằng nếu phản hồi đã được commit
5void addCookie(Cookie cookie)Thêm cookie đã cho tới phản hồi
6void addDateHeader(String name, long date)Thêm một header phản hồi với tên và giá trị date đã cho
7void addHeader(String name, String value)Thêm một header phản hồi với tên và giá trị đã cho
8void addIntHeader(String name, int value)Thêm một header phản hồi với tên và giá trị integer đã cho
9void flushBuffer()Force bất kỳ nội dung nào trong Buffer để được ghi tới Client đó
10void reset()Xóa bất dữ liệu nào tồn tại trong buffer cũng như Status code và các trường header
11void resetBuffer()Xóa nội dung của buffer nằm dưới trong phản hồi mà không xóa các trường header và status code
12void sendError(int sc)Gửi một phản hồi lỗi tới Client bởi sử dụng Status code đã cho và xóa buffer
13void sendError(int sc, String msg)Gửi một phản hồi lỗi tới Client bởi sử dụng Status code đã cho
14void sendRedirect(String location)Gửi một phản hồi Redirect tạm thời tới Client bởi sử dụng địc chỉ URL để Redirect đã cho
15void setBufferSize(int size)Thiết lập kích cỡ buffer cho thân phản hồi
16void setCharacterEncoding(String charset)Thiết lập mã hóa ký tự (MIME Charset) của phản hồi đang được gửi tới Client, ví dụ, thiết lập là UTF-8
17void setContentLength(int len)Thiết lập độ dài nội dung của thân phản hồi trong HTTP Servlet, phương thức này thiết lập trường header là HTTP Content-Length
18void setContentType(String type)Thiết lập kiểu nội dung của phản hồi đang được gửi tới Client, nếu phản hồi vẫn chưa được commit
19void setDateHeader(String name, long date)Thiết lập một header phản hồi với tên và giá trị date đã cho
20void setHeader(String name, String value)Thiết lập một header phản hồi với tên và giá trị đã cho
21void setIntHeader(String name, int value)Thiết lập một header phản hồi với tên và giá trị integer đã cho
22void setLocale(Locale loc)Thiết lập Locale của phản hồi, nếu phản hồi vẫn chưa được commit
23void setStatus(int sc)Thiết lập Status code cho phản hồi này

Ví dụ về HTTP Header Response trong JSP

Ví dụ sau sẽ sử dụng phương thức setIntHeader() để thiết lập Refresh Header để đóng vai một digital clock.

<%@ page import="java.io.*,java.util.*" %>
<html>
<head>
<title>Auto Refresh Header Example</title>
</head>
<body>
<center>
<h2>Auto Refresh Header Example</h2>
<%
   // Set refresh, autoload time as 5 seconds
   response.setIntHeader("Refresh", 5);
   // Get current time
   Calendar calendar = new GregorianCalendar();
   String am_pm;
   int hour = calendar.get(Calendar.HOUR);
   int minute = calendar.get(Calendar.MINUTE);
   int second = calendar.get(Calendar.SECOND);
   if(calendar.get(Calendar.AM_PM) == 0)
      am_pm = "AM";
   else
      am_pm = "PM";
   String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
   out.println("Current Time is: " + CT + "\n");
%>
</center>
</body>
</html>

Bây giờ, bạn đặt code trên trong main.jsp và thử truy cập nó. Nó sẽ hiển thị System time sau mỗi 5s. Chạy JSP và đợi kết quả:

Auto Refresh Header Example
Current Time is: 9:44:50 PM
Để làm quen với các phương thức này, bạn thử viết các chương trình sử dụng các phương thức trên theo cách thức tương tự trên.