English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Response响应对象主要将JSP容器处理后的结果传回到客户端。可以通过response变量设置HTTP的状态和向客户端发送数据,如Cookie、HTTP文件头信息等。
一个典型的响应看起来就像下面这样:
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (空行) <!doctype ...> <html> <head>.../<head> <body> ... </body> </html>
状态行包含HTTP版本信息,比如HTTP/1.1,一个状态码,比如200,还有一个非常短的信息对应着状态码,比如OK。
下表摘要出了HTTP1.1响应头中最有用的部分,在网络编程中您将会经常见到它们:
响应头 | Beschreibung |
---|---|
Allow | 指定服务器支持的request方法(GET,POST等等) |
Cache-Control | 指定响应文档能够被安全缓存的情况。通常取值为 public,private 或no-cache 等等。 Public意味着文档可缓存,Private意味着文档只为单用户服务并且只能使用私有缓存。No-cache 意味着文档不被缓存。 |
Connection | 命令浏览器是否要使用持久的HTTP连接。close值 命令浏览器不使用持久HTTP连接,而keep-alive 意味着使用持久化连接。 |
Content-Disposition | 让浏览器要求用户将响应以给定的名称存储在磁盘中 |
Content-Encoding | 指定传输时页面的编码规则 |
Content-Language | 表述文档所使用的语言,比如en, en-us,,ru等等 |
Content-Length | 表明响应的字节数。只有在浏览器使用持久化 (keep-alive) HTTP 连接时才有用 |
Content-Type | 表明文档使用的MIME类型 |
Expires | 指明啥时候过期并从缓存中移除 |
Last-Geändert | 指明文档最后修改时间。客户端可以缓存文档并且在后续的请求中提供一个 Wenn-Geändert-SeitRequestkopf |
Location | In3Innerhalb von 00 Sekunden, enthält die Adresse einer Antwort mit einem Statuscode alle, die der Browser automatisch neu verbindet und den neuen Dokument abruft |
Aktualisieren | Weist an, wie oft der Browser die Seite aktualisieren soll |
Wiederholung-Nach | und503 Kombiniert mit (Service Unavailable), um dem Benutzer mitzuteilen, wie lange der Request bis zur Antwort erwartet wird |
Set-Cookie | Weist den Cookie zu, der der aktuellen Seite entspricht |
Das response-Objekt ist ein Beispiel für die Klasse javax.servlet.http.HttpServletResponse. So wie der Server ein request-Objekt erstellt, erstellt er auch eine Client-Antwort.
Das response-Objekt definiert das Interface zur Verarbeitung der Erstellung von HTTP-Informationköpfen. Durch die Verwendung dieses Objekts können Entwickler neue Cookies oder Zeitstempel sowie HTTP-Statuscodes hinzufügen.
Die folgende Tabelle zeigt die Methoden an, die verwendet werden, um HTTP-Antwortköpfe zu setzen, die von der Klasse HttpServletResponse bereitgestellt werden:
S.N. | Methode & Beschreibung |
---|---|
1 | String encodeRedirectURL(String url) URL-Kodierung für die Verwendung im sendRedirect()-Methoden-URL |
2 | String encodeURL(String url) URL-Kodierung, Rückgabe einer URL, die den Session-ID enthält |
3 | boolean containsHeader(String name) Rückgabewert, ob ein angegebener Antwortkopf existiert |
4 | boolean isCommitted() Rückgabewert, ob die Antwort bereits an den Client übermittelt wurde |
5 | void addCookie(Cookie cookie) Fügen Sie einen angegebenen Cookie zur Antwort hinzu |
6 | void addDateHeader(String name, long date) Fügen Sie einen Antwortkopf mit angegebenem Namen und Datumswert hinzu |
7 | void addHeader(String name, String value) Fügen Sie einen Antwortkopf mit angegebenem Namen und Wert hinzu |
8 | void addIntHeader(String name, int value) Fügen Sie einen Antwortkopf mit angegebenem Namen und Integer-Wert hinzu |
9 | void flushBuffer() Schreiben Sie alle Inhalte aus jedem Cache in den Client |
10 | void reset() Löschen Sie alle Daten aus jedem Cache, einschließlich Statuscodes und verschiedener Antwortköpfe |
11 | void resetBuffer() Löschen Sie die grundlegenden Cache-Daten, ohne die Antwortköpfe und Statuscodes zu löschen |
12 | void sendError(int sc) Senden Sie eine Fehlerantwort an den Client mit dem angegebenen Statuscode und löschen Sie den Cache |
13 | void sendError(int sc, String msg) Senden Sie eine Fehlerantwort an den Client mit dem angegebenen Statuscode und der Nachricht |
14 | void sendRedirect(String location) Senden Sie eine temporäre indirekte Antwort an den Client mit der angegebenen URL |
15 | void setBufferSize(int size) Stellen Sie die Größe des Puffers der Antwortkörper ein |
16 | void setCharacterEncoding(String charset) Geben Sie die Kodierungssammlung (MIME-Zeichensatz) der Antwort an, z.B. UTF-8 |
17 | void setContentLength(int len) Geben Sie die Länge des Inhalts der Antwort in den HTTP-Servlets an, dieser Methodenaufruf wird verwendet, um den HTTP Content zu-Längeninformationen |
18 | void setContentType(String type) Stellen Sie den Typ des Inhalts der Antwort ein, falls die Antwort noch nicht abgegeben wurde |
19 | void setDateHeader(String name, long date) Stellen Sie den Namen und das Datum des Headers mit dem angegebenen Namen und Datum ein |
20 | void setHeader(String name, String value) Stellen Sie den Namen und den Inhalt des Headers mit dem angegebenen Namen und Wert ein |
21 | void setIntHeader(String name, int value) Geben Sie den Wert eines int-Typs an den Headername name weiter |
22 | void setLocale(Locale loc) Stellen Sie die Sprachumgebung der Antwort ein, falls die Antwort noch nicht abgegeben wurde |
23 | void setStatus(int sc) Stellen Sie den Statuscode der Antwort ein |
Der folgende Beispiel verwendet die Methoden setIntHeader() und setRefreshHeader() um eine digitale Uhr zu simulieren:
<%%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%%> <%%@ page import="java.io.*,java.util.*" %%> !DOCTYPE html <html> <head> <meta charset="utf-8"> <title>Grundlegende Anleitung Website(oldtoolbag.com)</title>/<title> </<head> <body> <h2>Automatischer Neuladensatz</h2> <% // Jedes5Sekunden automatisch neu laden response.setIntHeader("Refresh", 5); // Aktuelle Zeit erhalten 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; out.println("Aktuelle Zeit: " + CT + "\n"); %> </body> </html>
Speichern Sie den obigen Code als main.jsp und öffnen Sie ihn über den Browser. Er wird每隔5Die Sekunden werden die aktuelle Systemzeit anzeigen.
Sie können auch selbst Hand an die obige Codeänderungen anlegen und andere Methoden ausprobieren, um ein tieferes Verständnis zu erlangen.