Das Response-Objekt überträgt hauptsächlich die vom JSP-Container verarbeiteten Ergebnisse zurück an den Client. Sie können den HTTP-Status festlegen und über die Antwortvariable Daten an den Client senden, z. B. Cookies, HTTP-Dateiheaderinformationen usw.
Eine typische Antwort sieht so aus:
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ...HeaderN: ... (Leerzeile)<!doctype ...><html><head>...</head><body> ... </body></html>
Die Statuszeile enthält HTTP-Versionsinformationen, z. B. HTTP/1.1, einen Statuscode, z. B. 200, und eine sehr kurze Nachricht, die dem Statuscode entspricht, z. B. OK.
Die folgende Tabelle fasst die nützlichsten Teile von HTTP 1.1-Antwortheadern zusammen, die Sie häufig in der Netzwerkprogrammierung sehen werden:
Antwortheader | beschreiben |
---|---|
Erlauben | Geben Sie die vom Server unterstützten Anforderungsmethoden an (GET, POST usw.). |
Cache-Kontrolle | Gibt die Umstände an, unter denen Antwortdokumente sicher zwischengespeichert werden können. Normalerweise ist der Wert public , private oder no-cache usw. „Öffentlich“ bedeutet, dass das Dokument zwischengespeichert werden kann, und „Privat“ bedeutet, dass das Dokument nur einem einzelnen Benutzer bereitgestellt wird und nur den privaten Cache verwenden kann. Kein Cache bedeutet, dass das Dokument nicht zwischengespeichert wird. |
Verbindung | Weist den Browser an, ob dauerhafte HTTP-Verbindungen verwendet werden sollen. Der Close -Wert weist den Browser an, keine dauerhaften HTTP-Verbindungen zu verwenden, während Keep-Alive bedeutet, dauerhafte Verbindungen zu verwenden. |
Inhaltliche Disposition | Lassen Sie den Browser den Benutzer auffordern, die Antwort unter dem angegebenen Namen auf der Festplatte zu speichern |
Inhaltskodierung | Geben Sie die Kodierungsregeln für die Seite während der Übertragung an |
Inhaltssprache | Die Sprache, in der das Dokument ausgedrückt wird, z. B. en, en-us, ru usw. |
Inhaltslänge | Gibt die Anzahl der Bytes in der Antwort an. Nur sinnvoll, wenn der Browser Keep-Alive-HTTP-Verbindungen verwendet |
Inhaltstyp | Gibt den vom Dokument verwendeten MIME-Typ an |
Läuft ab | Geben Sie an, wann ablaufen und aus dem Cache entfernt werden soll |
Zuletzt geändert | Gibt an, wann das Dokument zuletzt geändert wurde. Der Client kann das Dokument zwischenspeichern und in nachfolgenden Anfragen einen If-Modified-Since- Anfrageheader bereitstellen |
Standort | Innerhalb von 300 Sekunden, einschließlich aller Antwortadressen mit einem Statuscode, stellt der Browser automatisch die Verbindung wieder her und ruft neue Dokumente ab. |
Aktualisieren | Gibt an, wie oft der Browser Aktualisierungen der Seite anfordert. |
Wiederholen-Nachher | Wird mit 503 (Dienst nicht verfügbar) verwendet, um dem Benutzer mitzuteilen, wie lange es dauern wird, bis die Anfrage beantwortet wird |
Set-Cookie | Geben Sie das Cookie an, das der aktuellen Seite entspricht |
Das Antwortobjekt ist eine Instanz der Klasse javax.servlet.http.HttpServletResponse. So wie der Server das Anforderungsobjekt erstellt, erstellt er auch eine Client-Antwort.
Das Antwortobjekt definiert die Schnittstelle für die Erstellung von HTTP-Headern. Mithilfe dieses Objekts können Entwickler neue Cookies oder Zeitstempel, HTTP-Statuscodes und mehr hinzufügen.
In der folgenden Tabelle sind die Methoden aufgeführt, die zum Festlegen von HTTP-Antwortheadern verwendet werden. Diese Methoden werden von der HttpServletResponse-Klasse bereitgestellt:
SN | Methode und Beschreibung |
---|---|
1 | String encodeRedirectURL(String url) kodiert die von der sendRedirect()-Methode verwendete URL |
2 | String encodeURL(String url) kodiert die URL und gibt die URL zurück, die die Sitzungs-ID enthält. |
3 | boolean containsHeader(String name) gibt zurück, ob der angegebene Antwortheader vorhanden ist |
4 | boolean isCommitted() gibt zurück, ob die Antwort an den Client übermittelt wurde |
5 | void addCookie(Cookie cookie) fügt der Antwort das angegebene Cookie hinzu |
6 | void addDateHeader(String name, long date) fügt den Antwortheader und den Datumswert des angegebenen Namens hinzu |
7 | void addHeader(String name, String value) fügt den Antwortheader und den Wert des angegebenen Namens hinzu |
8 | void addIntHeader(String name, int value) fügt den Antwortheader und den int-Wert des angegebenen Namens hinzu |
9 | void flushBuffer() schreibt den Inhalt eines beliebigen Caches auf den Client |
10 | void reset() löscht alle Daten in jedem Cache, einschließlich Statuscodes und verschiedenen Antwortheadern |
11 | void resetBuffer() löscht grundlegende Cache-Daten, mit Ausnahme von Antwortheadern und Statuscodes |
12 | void sendError(int sc) sendet eine Fehlerantwort mit dem angegebenen Statuscode an den Client und löscht dann den Cache |
13 | void sendError(int sc, String msg) sendet eine Fehlerantwort mit dem angegebenen Statuscode und der angegebenen Nachricht an den Client |
14 | void sendRedirect(String location) sendet eine temporäre indirekte Antwort an den Client unter Verwendung der angegebenen URL |
15 | void setBufferSize(int size) legt die Puffergröße des Antworttextes fest |
16 | void setCharacterEncoding(String charset) gibt den Antwortkodierungssatz (MIME-Zeichensatz) an, z. B. UTF-8 |
17 | void setContentLength(int len) gibt die Länge des Antwortinhalts in HTTP-Servlets an. Diese Methode wird verwendet, um den HTTP-Content-Length-Informationsheader festzulegen. |
18 | void setContentType(String type) legt den Inhaltstyp der Antwort fest, wenn die Antwort noch nicht übermittelt wurde |
19 | void setDateHeader(String name, long date) legt den Namen und Inhalt des Antwortheaders unter Verwendung des angegebenen Namens und Werts fest |
20 | void setHeader(String name, String value) legt den Namen und Inhalt des Antwortheaders unter Verwendung des angegebenen Namens und Werts fest |
einundzwanzig | void setIntHeader(String name, int value) legt den Namen und Inhalt des Antwortheaders unter Verwendung des angegebenen Namens und Werts fest |
zweiundzwanzig | void setLocale(Locale loc) legt das Gebietsschema der Antwort fest, wenn die Antwort noch nicht übermittelt wurde |
dreiundzwanzig | void setStatus(int sc) legt den Statuscode der Antwort fest |
Im folgenden Beispiel werden die Methoden setIntHeader() und setRefreshHeader() verwendet, um eine Digitaluhr zu simulieren:
<%@ page import="java.io.*,java.util.*" %><html><head><title>Beispiel für die automatische Aktualisierung des Headers</title></head><body><center><h2 >Auto Refresh Header-Beispiel</h2><% //Automatische Aktualisierung alle 5 Sekunden festlegen Response.setIntHeader("Refresh", 5); //Erhalten Sie die aktuelle Uhrzeit Calendar = new GregorianCalendar(); am_pm; int Stunde = Calendar.get(Calendar.MINUTE); int Minute = Calendar.get(Calendar.SECOND); if(calendar.get(Calendar.AM_PM) == 0) am_pm = „AM“; else am_pm = „PM“; String CT = Stunde+“: „+ Minute +“: „+ Sekunde +“ „+ am_pm; out.println("Aktuelle Zeit ist: " + CT + "n"); %></center></body></html>
Speichern Sie den obigen Code als main.jsp und greifen Sie über Ihren Browser darauf zu. Es zeigt alle 5 Sekunden die aktuelle Systemzeit an.
Die Laufergebnisse sind wie folgt:
Beispiel für die automatische Aktualisierung des Headers. Die aktuelle Zeit ist: 21:44:50 Uhr
Sie können den obigen Code auch selbst ändern und andere Methoden ausprobieren, um ein tieferes Verständnis zu erlangen.