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 |
---|---|
|
This header information specifies the request method supported by the server(GET, POST, and so on). |
|
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. |
|
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. |
|
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. |
|
During transmission, this header information specifies how the page is encoded. |
|
This header information represents the language in which the document is written. For example, en, en-us, ru, and so on. |
|
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. |
|
This header information provides the MIME (Multipurpose Internet Mail Extension) type of the response document. |
|
This header information specifies when the content expires, after which the content is no longer cached. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
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: