Servlet server HTTP response


Release date:2023-12-13 Update date:2023-12-13 Editor:admin View counts:173

Label:

Servlet server HTTP response

As discussed in the previous section, when an Web server responds to an HTTPrequest, the response usually includes a status line, some response headers, a blank line, and a document. A typical response is as follows:

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

The status line includes the HTTP version (HTTP/1.1 in this case), a status code (200 in this case), and a short message corresponding to the status code (OK in this case).

The following table summarizes the most useful HTTP 1.1 response headers returned to the browser from the Web server side, which you use frequently in Web programming:

Header information

Description

Allow

This header information specifies the request method supported by the server(GET, POST, and so on).

Cache-Control

This header information specifies the circumstances under which the responsedocument can be safely cached. Possible values are: public, private, no-cache, etc. Public means that the document is cacheable, Private means that the document is private to a single user and can only be stored in a private(non-shared) cache, and no-cache means that the document should not be cached.

Connection

This header indicates whether the browser uses a persistent HTTP connection.The value close indicates that the browser does not use a persistent HTTP connection, and the value keep-alive means that a persistent connection is used.

Content-Disposition

This header information allows you to request the browser to ask the user tosave the response to disk with a file with a given name.

Content-Encoding

During transmission, this header information specifies how the page is encoded.

Content-Language

This header information represents the language in which the document is written. For example, en, en-us, ru, and so on.

Content-Length

This header information indicates the number of bytes in the response. This information is needed only if the browser uses a persistent (keep-alive) HTTP connection.

Content-Type

This header information provides the MIME (Multipurpose Internet Mail Extension) type of the response document.

Expires

This header information specifies when the content expires, after which the content is no longer cached.

Last-Modified

This header information indicates when the document was last modified. The client can then cache the file and provide a date through the If-Modified-Since request header information in subsequent requests.

Location

This header information should be included in all responses with status codes. Within 300s, this notifies the browser of the address of the document. The browser will automatically reconnect to this location and get the new document.

Refresh

This header information specifies how the browser should request an updated page as soon as possible. You can specify the number of seconds to refresh the page.

Retry-After

This header information can be used in conjunction with the 503 (Service Unavailable service unavailable) response, which tells the client how long it takes to repeat its request.

Set-Cookie

This header information specifies a cookie associated with the page.

The method of setting the HTTP response header

The following method can be used to set the HTTP response header in a Servlet program. These methods are passed through HttpServletResponse object is available.

Serial number

Method & description

1

String encodeRedirectURL(String url) encodes the specified URL used in the sendRedirect method, or returns the URL unchanged if the encoding is notrequired.

2

String encodeURL(String url) encodes the specified URL that contains thesession session ID, or if the encoding is not required, the return URL remains unchanged.

3

boolean containsHeader(String name) returns a Boolean value indicating whether the named response header has been set.

4

boolean isCommitted() returns a Boolean value indicating whether the response has been submitted.

5

void addCookie(Cookie cookie) adds the specified cookie to the response.

6

void addDateHeader(String name, long date) add a response header with the given name and date value.

7

void addHeader(String name, String value) add a response header with thegiven name and value.

8

void addIntHeader(String name, int value) add a response header with thegiven name and integer value.

9

void flushBuffer() forces anything in the buffer to be written to the client.

10

void reset() clears any data that exists in the buffer, including statuscodes and headers.

11

void resetBuffer() clears the contents of the underlying buffer in the response without clearing the status code and header.

12

void sendError(int sc) sends an error response to the client using the specified status code and clears the buffer.

13

void sendError(int sc, String msg) sends an error response to the clientusing the specified status.

14

void sendRedirect(String location) sends a temporary redirect response to the client using the specified redirect location URL.

15

void setBufferSize(int size) sets the preferred buffer size for the response body.

16

void setCharacterEncoding(String charset) sets the character encoding (MIME character set) of the response sent to the client, for example, UTF-8.

17

void setContentLength(int len) sets the length of the content body in the HTTP Servlet response, which sets the HTTP Content-Length header.

18

void setContentType(String type) if the response has not been submitted,sets the content type of the response that is sent to the client.

19

void setDateHeader(String name, long date) sets a response header with the given name and date value.

20

void setHeader(String name, String value) sets a response header with the given name and value.

21

void setIntHeader(String name, int value) sets a response header with the given name and integer value.

22

void setLocale(Locale loc) if the response has not been submitted, set the area of the response.

23

void setStatus(int sc) set the status code for the response.

HTTP Header response instance

You have seen in the previous example setContentType() method, the following example uses the same method, in addition, we will use the setIntHeader() method to set the Refresh head.

//Import necessary Java libraries
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

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

@WebServlet("/Refresh")

//Extend HttpServlet Class
public class Refresh extends HttpServlet {

    // Method for handling GET method requests
      public void doGet(HttpServletRequest request,
                        HttpServletResponse response)
                throws ServletException, IOException
      {
          // Set the refresh auto load time to 5 seconds
          response.setIntHeader("Refresh", 5);
          // Set response content type
          response.setContentType("text/html;charset=UTF-8");

          //Obtain a calendar using default time zone and language environment
          Calendar cale = Calendar.getInstance();
          //Convert Calendar type to Date type
          Date tasktime=cale.getTime();
          //Format date output
          SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          //Format output
          String nowTime = df.format(tasktime);
          PrintWriter out = response.getWriter();
          String title = "Automatic Refresh Header Settings - Rookie Tutorial Example";
          String docType =
          "<!DOCTYPE html>\n";
          out.println(docType +
            "<html>\n" +
            "<head><title>" + title + "</title></head>\n"+
            "<body bgcolor=\"#f0f0f0\">\n" +
            "<h1 align=\"center\">" + title + "</h1>\n" +
            "<p>The current time is:" + nowTime + "</p>\n");
      }
      // Method for handling POST method requests
      public void doPost(HttpServletRequest request,
                         HttpServletResponse response)
          throws ServletException, IOException {
         doGet(request, response);
      }
}

The above test examples are located under the TomcatTest project, and the corresponding web.xml configured to:

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
     <!-- Class name -->
    <servlet-name>Refresh</servlet-name>
    <!-- The package it is in -->
    <servlet-class>com.runoob.test.Refresh</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Refresh</servlet-name>
    <!-- Visited website -->
    <url-pattern>/TomcatTest/Refresh</url-pattern>
    </servlet-mapping>
</web-app>

Now, call the Servlet above, and the current system time will be displayed every 5 seconds. Just run Servlet and wait a moment, and you will see the following result:

Image0

Powered by TorCMS (https://github.com/bukun/TorCMS).