11/08/2018, 18:52

Response trong Servlet

Request trong Servlet Khi Web server đáp ứng ( response ) yêu cầu của HTTP request. Một response thông thường bao gồm trạng thái (status), header, blank line, và document. HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Blank ...

Request trong Servlet

Khi Web server đáp ứng (response) yêu cầu của HTTP request. Một response thông thường bao gồm trạng thái (status), header, blank line, và document.

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 (status) bao gồm: phiên bản HTTP (trong ví dụ là HTTP / 1.1), mã trạng thái (trong ví dụ là 200) và một thông báo rất ngắn tương ứng với mã trạng thái (trong ví dụ là OK).

Các phương thức để set HTTP Header response trong servlet

Các phương thức sau đây có thể được sử dụng để set HTTP Header response trong chương trình servlet của bạn. Các phương pháp này có sẵn trong đối tượng HttpServletResponse.

No. Phương pháp & Mô tả
1 String encodeRedirectURL(String url)

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

2 String encodeURL(String url)

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

3 boolean containsHeader(String name)

Trả về một Boolean cho biết header response đã được đặt chưa.

4 boolean isCommitted()

Trả về một Boolean chỉ ra nếu đáp ứng đã được thực hiện.

5 void addCookie(Cookie cookie)

Thêm cookie được chỉ định vào câu trả lời.

6 void addDateHeader(String name, long date)

Thêm một header đáp ứng với tên và giá trị ngày.

7 void addHeader(String name, String value)

Thêm một header đáp ứng với tên và giá trị đã cho.

8 void addIntHeader(String name, int value)

Thêm một header đáp ứng với tên và giá trị số nguyên.

9 void flushBuffer()

Buộc bất kỳ nội dung nào trong bộ đệm sẽ được ghi vào máy khách.

10 void reset()

Xóa bất kỳ dữ liệu nào tồn tại trong bộ đệm cũng như mã trạng thái và header.

11 void resetbuffer()

Xóa nội dung của bộ đệm cơ bản trong response mà không có header xoá hoặc mã trạng thái.

12 void sendError(int sc)

Gây response lỗi tới máy khách bằng cách sử dụng mã trạng thái được chỉ định và xóa bộ đệm.

13 void sendError(int sc, String msg)

Gửi response lỗi đến máy khách sử dụng trạng thái được chỉ định.

14 void sendRedirect(String location)

Gửi response chuyển hướng tạm thời tới 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)

Thiết lập kích thước bộ đệm cho response.

16 void setCharacterEncoding(String charset)

Thiết lập mã hoá ký tự(ký tự MIME) của câu trả lời được gửi tới khách hàng, ví dụ như để UTF-8.

17 void setContentLength(int len)

Đặt độ dài của nội dung trong response Trong HTTP servlet, phương pháp này đặt header HTTP Content-Length.

18 void setContentLength(int len)

Thiết lập kiểu nội dung của câu trả lời được gửi đến khách hàng, nếu chưa trả lời.

19 void setContentType(String type)

Thiết lập một header đáp ứng với tên và giá trị ngày. .

20 void setHeader(String name, String value)

Đặt header response với tên và giá trị đã cho.

21 void setIntHeader(String name, int value)

Thiết lập header đáp ứng với tên và giá trị số đã cho.

22 void setLocale(Locale loc)

Đặt vị trí của câu trả lời, nếu chưa trả lời. .

23 void setStatus(int sc)

Đặt mã trạng thái cho response này.

Ví dụ response trong servlet

Như bạn đã thấy phương thức setContentType() đã từng được sử dụng trong các ví dụ trước. Và nó cũng được sử dụng trong ví dụ này, ngoài ra chúng ta sử dụng phương thức setIntHeader() để set header là Refresh.

Tạo file DisplayHeader.java

package vn.viettuts;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//Extend HttpServlet class
public class Refresh extends HttpServlet {

    // Method to handle GET method request.
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        // Set refresh, autoload time as 5 seconds
        response.setIntHeader("Refresh", 5);

        // Set response content type
        response.setContentType("text/html");

        // 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;

        PrintWriter out = response.getWriter();
        String title = "Auto Refresh Header Setting";
        String docType = "<!doctype html public "-//w3c//dtd html 4.0 " 
                + "transitional//en">
";

        out.println(docType + "<html>
" +
                "<head><title>" + title + "</title></head>
"+
                "<body bgcolor = "#f0f0f0">
" +
                "<h1 align = "center">" + title + "</h1>
" +
                "<p>Current Time is: " + CT + "</p>
");
    }

    // Method to handle POST method request.
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

Cấu hình servlet DisplayHeader trong file web.xml

    <servlet>
        <servlet-name>Refresh</servlet-name>
        <servlet-class>vn.viettuts.Refresh</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Refresh</servlet-name>
        <url-pattern>/Refresh</url-pattern>
    </servlet-mapping>

Gọi servlet trên sẽ tạo ra kết quả sau: sẽ hiển thị thời gian hệ thống hiện tại và tự động refresh sau mỗi 5 giây.

Ví dụ response trong servlet
Request trong Servlet
0