📜  JSP-服务器响应

📅  最后修改于: 2020-11-13 05:19:43             🧑  作者: Mango


在本章中,我们将讨论JSP中的服务器响应。当Web服务器响应HTTP请求时,响应通常包括状态行,某些响应标头,空白行和文档。一个典型的响应看起来像这样-

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


   ...
   
      ...
   

状态行由HTTP版本(示例中为HTTP / 1.1) ,状态代码(示例中为200)以及与状态代码相对应的非常短的消息(示例中为OK)组成

以下是最有用的HTTP 1.1响应标头的摘要,这些标头从Web服务器返回到浏览器。这些标头经常在Web编程中使用-

S.No. Header & Description
1

Allow

This header specifies the request methods (GET, POST, etc.) that the server supports.

2

Cache-Control

This header specifies the circumstances in which the response document can safely be cached. It can have values public, private or no-cache etc. Public means document is cacheable, Private means document is for a single user and can only be stored in private (nonshared) caches and no-cache means document should never be cached.

3

Connection

This header instructs the browser whether to use persistent HTTP connections or not. A value of close instructs the browser not to use persistent HTTP connections and keep-alive means using persistent connections.

4

Content-Disposition

This header lets you request that the browser ask the user to save the response to disk in a file of the given name.

5

Content-Encoding

This header specifies the way in which the page was encoded during transmission.

6

Content-Language

This header signifies the language in which the document is written. For example, en, en-us, ru, etc.

7

Content-Length

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

8

Content-Type

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

9

Expires

This header specifies the time at which the content should be considered out-of-date and thus no longer be cached.

10

Last-Modified

This header indicates when the document was last changed. The client can then cache the document and supply a date by an If-Modified-Since request header in later requests.

11

Location

This header should be included with all responses that have a status code in the 300s. This notifies the browser of the document address. The browser automatically reconnects to this location and retrieves the new document.

12

Refresh

This header specifies how soon the browser should ask for an updated page. You can specify time in number of seconds after which a page would be refreshed.

13

Retry-After

This header can be used in conjunction with a 503 (Service Unavailable) response to tell the client how soon it can repeat its request.

14

Set-Cookie

This header specifies a cookie associated with the page.

HttpServletResponse对象

响应对象是javax.servlet.http.HttpServletResponse对象的实例。正如服务器创建请求对象一样,它也创建一个对象来表示对客户端的响应。

响应对象还定义了用于处理创建新HTTP标头的接口。通过此对象,JSP程序员可以添加新的cookie或日期戳,HTTP状态代码等。

可以使用以下方法在servlet程序中设置HTTP响应标头。这些方法可用于HttpServletResponse对象。该对象代表服务器响应。

S.No. Method & Description
1

String encodeRedirectURL(String url)

Encodes the specified URL for use in the sendRedirect method or, if encoding is not needed, returns the URL unchanged.

2

String encodeURL(String url)

Encodes the specified URL by including the session ID in it, or, if encoding is not needed, returns the URL unchanged.

3

boolean containsHeader(String name)

Returns a boolean indicating whether the named response header has already been set.

4

boolean isCommitted()

Returns a boolean indicating if the response has been committed.

5

void addCookie(Cookie cookie)

Adds the specified cookie to the response.

6

void addDateHeader(String name, long date)

Adds a response header with the given name and date-value.

7

void addHeader(String name, String value)

Adds a response header with the given name and value.

8

void addIntHeader(String name, int value)

Adds a response header with the given name and integer value.

9

void flushBuffer()

Forces any content in the buffer to be written to the client.

10

void reset()

Clears any data that exists in the buffer as well as the status code and headers.

11

void resetBuffer()

Clears the content of the underlying buffer in the response without clearing headers or status code.

12

void sendError(int sc)

Sends an error response to the client using the specified status code and clearing the buffer.

13

void sendError(int sc, String msg)

Sends an error response to the client using 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 body of the response.

16

void setCharacterEncoding(String charset)

Sets the character encoding (MIME charset) of the response being sent to the client, for example, to UTF-8.

17

void setContentLength(int len)

Sets the length of the content body in the response In HTTP servlets; this method also sets the HTTP Content-Length header.

18

void setContentType(String type)

Sets the content type of the response being sent to the client, if the response has not been committed yet.

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)

Sets the locale of the response, if the response has not been committed yet.

23

void setStatus(int sc)

Sets the status code for this response.

HTTP标头响应示例

以下示例将使用setIntHeader()方法设置Refresh标头以模拟数字时钟-

Auto Refresh Header Example
   
   
   
      

Auto Refresh Header Example

现在将上面的代码放在main.jsp中,并尝试访问它。每隔5秒将显示当前系统时间,如下所示。运行JSP。您将收到以下输出:-

Auto Refresh Header Example
Current Time is: 9:44:50 PM

您可以尝试以类似方式尝试其他方法。