JSP - Phản hồi của máy chủ

Trong chương này, chúng ta sẽ thảo luận về Phản hồi của Máy chủ trong JSP. Khi máy chủ Web phản hồi một yêu cầu HTTP, phản hồi thường bao gồm một dòng trạng thái, một số tiêu đề phản hồi, một dòng trống và tài liệu. Một phản hồi điển hình trông như thế này -

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
   (Blank Line)
<!doctype ...>

<html>
   <head>...</head>
   <body>
      ...
   </body>
</html>

Dòng trạng thái bao gồm phiên bản HTTP (HTTP/1.1 in the example), một mã trạng thái (200 in the example)và một thông báo rất ngắn tương ứng với mã trạng thái (OK in the example).

Sau đây là tóm tắt về các tiêu đề phản hồi HTTP 1.1 hữu ích nhất quay trở lại trình duyệt từ máy chủ web. Những tiêu đề này thường được sử dụng trong lập trình web -

Không. Tiêu đề & Mô tả
1

Allow

Tiêu đề này chỉ định các phương thức yêu cầu (GET, POST, v.v.) mà máy chủ hỗ trợ.

2

Cache-Control

Tiêu đề này chỉ định các trường hợp mà tài liệu phản hồi có thể được lưu vào bộ nhớ cache một cách an toàn. Nó có thể có các giá trịpublic, private hoặc là no-cache v.v ... Công khai nghĩa là tài liệu có thể lưu vào bộ nhớ cache, Riêng tư nghĩa là tài liệu dành cho một người dùng và chỉ có thể được lưu trữ trong bộ nhớ đệm riêng tư (không chia sẻ) và không có bộ nhớ cache nghĩa là tài liệu không bao giờ được lưu vào bộ nhớ cache.

3

Connection

Tiêu đề này hướng dẫn trình duyệt có sử dụng kết nối HTTP liên tục hay không. Một giá trị củaclose hướng dẫn trình duyệt không sử dụng các kết nối HTTP liên tục và keep-alive nghĩa là sử dụng các kết nối liên tục.

4

Content-Disposition

Tiêu đề này cho phép bạn yêu cầu trình duyệt yêu cầu người dùng lưu phản hồi vào đĩa trong một tệp có tên đã cho.

5

Content-Encoding

Tiêu đề này chỉ định cách mã hóa trang trong quá trình truyền.

6

Content-Language

Tiêu đề này biểu thị ngôn ngữ mà tài liệu được viết. Ví dụ,en, en-us, ru, Vân vân.

7

Content-Length

Tiêu đề này cho biết 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 kết nối HTTP liên tục (vẫn tồn tại).

số 8

Content-Type

Tiêu đề này cung cấp cho MIME (Multipurpose Internet Mail Extension) loại tài liệu phản hồi.

9

Expires

Tiêu đề này chỉ định thời gian mà tại đó nội dung được coi là lỗi thời và do đó không còn được lưu vào bộ nhớ đệm.

10

Last-Modified

Tiêu đề này cho biết thời điểm tài liệu được thay đổi lần cuối. Sau đó, khách hàng có thể lưu vào bộ nhớ cache của tài liệu và cung cấp một ngày bằngIf-Modified-Since tiêu đề yêu cầu trong các yêu cầu sau này.

11

Location

Tiêu đề này nên được bao gồm với tất cả các phản hồi có mã trạng thái trong 300s. Điều này 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 với vị trí này và truy xuất tài liệu mới.

12

Refresh

Tiêu đề này chỉ định thời gian trình duyệt sẽ yêu cầu một trang được cập nhật. Bạn có thể chỉ định thời gian tính bằng số giây mà sau đó một trang sẽ được làm mới.

13

Retry-After

Tiêu đề này có thể được sử dụng cùng với 503 (Service Unavailable) phản hồi để cho khách hàng biết bao lâu nó có thể lặp lại yêu cầu của mình.

14

Set-Cookie

Tiêu đề này chỉ định một cookie được liên kết với trang.

Đối tượng HttpServletResponse

Đối tượng phản hồi là một ví dụ của javax.servlet.http.HttpServletResponse object. Giống như máy chủ tạo đối tượng yêu cầu, nó cũng tạo một đối tượng để đại diện cho phản hồi với máy khách.

Đối tượng phản hồi cũng xác định các giao diện xử lý việc tạo tiêu đề HTTP mới. Thông qua đối tượng này, lập trình viên JSP có thể thêm cookie mới hoặc tem ngày, mã trạng thái HTTP, v.v.

Các phương pháp sau có thể được sử dụng để đặt tiêu đề phản hồi HTTP trong chương trình servlet của bạn. Các phương thức này có sẵn với đối tượng HttpServletResponse . Đối tượng này đại diện cho phản hồi của máy chủ.

Không. Phương pháp & Mô tả
1

String encodeRedirectURL(String url)

Mã hóa URL được chỉ định để sử dụng trong sendRedirect hoặc, nếu không cần mã hóa, trả về URL không thay đổi.

2

String encodeURL(String url)

Mã hóa URL được chỉ định bằng cách bao gồm ID phiên trong đó hoặc, nếu không cần mã hóa, trả về URL không thay đổi.

3

boolean containsHeader(String name)

Trả về một boolean cho biết liệu tiêu đề phản hồi được đặt tên đã được đặt hay chưa.

4

boolean isCommitted()

Trả về boolean cho biết phản hồi đã được cam kết chưa.

5

void addCookie(Cookie cookie)

Thêm cookie được chỉ định vào phản hồi.

6

void addDateHeader(String name, long date)

Thêm tiêu đề phản hồi với tên và giá trị ngày đã cho.

7

void addHeader(String name, String value)

Thêm tiêu đề phản hồi với tên và giá trị đã cho.

số 8

void addIntHeader(String name, int value)

Thêm tiêu đề phản hồi với tên và giá trị số nguyên đã cho.

9

void flushBuffer()

Buộc ghi bất kỳ nội dung nào trong bộ đệm cho máy khách.

10

void reset()

Xóa mọi dữ liệu tồn tại trong bộ đệm cũng như mã trạng thái và tiêu đề.

11

void resetBuffer()

Xóa nội dung của bộ đệm bên dưới trong phản hồi mà không xóa tiêu đề hoặc mã trạng thái.

12

void sendError(int sc)

Gửi phản hồi lỗi cho máy khách bằng mã trạng thái được chỉ định và xóa bộ đệm.

13

void sendError(int sc, String msg)

Gửi phản hồi lỗi cho máy khách bằng trạng thái được chỉ định.

14

void sendRedirect(String location)

Gửi phản hồi chuyển hướng tạm thời cho khách hàng bằng cách sử dụng URL vị trí chuyển hướng được chỉ định.

15

void setBufferSize(int size)

Đặt kích thước bộ đệm ưu tiên cho nội dung phản hồi.

16

void setCharacterEncoding(String charset)

Ví dụ: đặt mã hóa ký tự (bộ mã MIME) của phản hồi được gửi đến máy khách thành UTF-8.

17

void setContentLength(int len)

Đặt độ dài của nội dung trong phản hồi Trong các servlet HTTP; phương pháp này cũng đặt tiêu đề Độ dài Nội dung HTTP.

18

void setContentType(String type)

Đặt loại nội dung của phản hồi được gửi đến máy khách, nếu phản hồi chưa được cam kết.

19

void setDateHeader(String name, long date)

Đặt tiêu đề phản hồi với tên và giá trị ngày đã cho.

20

void setHeader(String name, String value)

Đặt tiêu đề phản hồi với tên và giá trị đã cho.

21

void setIntHeader(String name, int value)

Đặt tiêu đề phản hồi với tên và giá trị số nguyên đã cho.

22

void setLocale(Locale loc)

Đặt ngôn ngữ của phản hồi, nếu phản hồi chưa được cam kết.

23

void setStatus(int sc)

Đặt mã trạng thái cho phản hồi này.

Ví dụ về phản hồi tiêu đề HTTP

Ví dụ sau sẽ sử dụng setIntHeader() phương pháp để thiết lập Refresh tiêu đề để mô phỏng đồng hồ kỹ thuật số -

<%@ 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ờ hãy đặt đoạn mã trên vào main.jspvà cố gắng truy cập nó. Điều này sẽ hiển thị thời gian hệ thống hiện tại sau mỗi 5 giây như sau. Chạy JSP. Bạn sẽ nhận được kết quả sau: -

Auto Refresh Header Example

Current Time is: 9:44:50 PM

Bạn có thể thử thực hiện các phương pháp khác theo cách tương tự.