2.8. Servlet server HTTP response

发布时间 : 2025-10-25 13:33:39 UTC      

Page Views: 9 views

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)   ...  ...   

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.

2.8.1. 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.

2.8.2. 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 = "\n"; out.println(docType + "\n" + ""</span> <span class="o">+</span> <span class="n">title</span> <span class="o">+</span> <span class="s2">"\n"+ "\"#f0f0f0\">\n" + "

\"center\">" + title + "\n" + "

The current time is:" + nowTime + "\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:

    Refresh  com.runoob.test.Refresh   Refresh  /TomcatTest/Refresh   

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

《地理信息系统原理、技术与方法》  97

最近几年来,地理信息系统无论是在理论上还是应用上都处在一个飞速发展的阶段。 GIS被应用于多个领域的建模和决策支持,如城市管理、区划、环境整治等等,地理信息成为信息时代重要的组成部分之一; “数字地球”概念的提出,更进一步推动了作为其技术支撑的GIS的发展。 与此同时,一些学者致力于相关的理论研究,如空间感知、空间数据误差、空间关系的形式化等等。 这恰好说明了地理信息系统作为应用技术和学科的两个方面,并且这两个方面构成了相互促进的发展过程。