JSP Réponse du serveur
L'objet Response envoie principalement les résultats traités par le conteneur JSP au client. Vous pouvez utiliser la variable response pour définir le statut HTTP et envoyer des données au client, telles que des cookies, des informations d'en-tête HTTP, etc.
Une réponse typique ressemble à ceci :
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (空行) <!doctype ...> <html> <head>...</head> <body> ... </body> </html>
La ligne d'état contient des informations sur la version HTTP, telles que HTTP/1.1, un code d'état, tel que 200, et un message très court correspondant au code d'état, tel que OK.
Le tableau suivant résume les parties les plus utiles des en-têtes de réponse HTTP/1.1 ; vous les rencontrerez souvent en programmation réseau :
| En-tête de réponse | Description |
|---|---|
| Allow | Spécifie les méthodes de requête prises en charge par le serveur (GET, POST, etc.) |
| Cache-Control | Spécifie les circonstances dans lesquelles le document de réponse peut être mis en cache en toute sécurité. Les valeurs typiques sontpublic,privateouno-cacheetc. Public signifie que le document peut être mis en cache, Private signifie que le document ne sert qu'à un seul utilisateur et ne peut utiliser qu'un cache privé. No-cache signifie que le document n'est pas mis en cache. |
| Connexion | Indique au navigateur s'il faut utiliser une connexion HTTP persistante.closeLa valeurIndique au navigateur de ne pas utiliser de connexion HTTP persistante, tandis que keep-alive signifie utiliser une connexion persistante. |
| Content-Disposition | Demande au navigateur d'inviter l'utilisateur à enregistrer la réponse sur le disque sous le nom donné. |
| Content-Encoding | Spécifie les règles d'encodage de la page lors de la transmission. |
| Content-Language | Indique la langue utilisée par le document, telle que en, en-us, ru, etc. |
| Content-Length | Indique le nombre d'octets dans la réponse. Il n'est utile que lorsque le navigateur utilise une connexion HTTP persistante (keep-alive). |
| Content-Type | Indique le type MIME utilisé par le document. |
| Expires | Indique quand le document expire et doit être supprimé du cache. |
| Last-Modified | Indique la date de dernière modification du document. Le client peut mettre le document en cache et fournir unIf-Modified-Sinceen-tête de requête. |
| Emplacement | Dans les 300 secondes, contient l'adresse de réponse pour un code d'état ; le navigateur se reconnectera automatiquement et récupérera le nouveau document. |
| Actualiser | Indique la fréquence à laquelle le navigateur doit demander une page mise à jour. |
| Retry-After | Utilisé avec 503 (Service Unavailable) pour indiquer à l'utilisateur combien de temps il faut attendre avant que la requête reçoive une réponse. |
| Set-Cookie | Indique le cookie correspondant à la page actuelle. |
Classe HttpServletResponse
L'objet de réponse est une instance de la classe javax.servlet.http.HttpServletResponse. Tout comme le serveur crée un objet de requête, il crée également une réponse client.
L'objet de réponse définit l'interface pour gérer et créer des en-têtes HTTP. En utilisant cet objet, les développeurs peuvent ajouter de nouveaux cookies ou horodatages, ainsi que des codes d'état HTTP, etc.
Le tableau suivant répertorie les méthodes utilisées pour définir les en-têtes de réponse HTTP, qui sont fournies par la classe HttpServletResponse :
| S.N. | Méthode & Description |
|---|---|
| 1 | String encodeRedirectURL(String url)Encode l'URL utilisée par la méthode sendRedirect(). |
| 2 | String encodeURL(String url)Encode l'URL et renvoie l'URL contenant l'ID de session. |
| 3 | boolean containsHeader(String name)Renvoie si l'en-tête de réponse spécifié existe. |
| 4 | boolean isCommitted()Renvoie si la réponse a été validée auprès du client. |
| 5 | void addCookie(Cookie cookie)Ajoute le cookie spécifié à la réponse. |
| 6 | void addDateHeader(String name, long date)Ajoute un en-tête de réponse avec le nom et la valeur de date spécifiés. |
| 7 | void addHeader(String name, String value)Ajoute un en-tête de réponse avec le nom et la valeur spécifiés. |
| 8 | void addIntHeader(String name, int value)Ajoute un en-tête de réponse avec le nom et la valeur int spécifiés. |
| 9 | void flushBuffer()Écrit tout contenu mis en mémoire tampon vers le client. |
| 10 | void reset()Efface toutes les données du tampon, y compris les codes d'état et les différents en-têtes de réponse. |
| 11 | void resetBuffer()Efface les données de base mises en mémoire tampon, à l'exclusion des en-têtes de réponse et des codes d'état. |
| 12 | void sendError(int sc)Envoie une réponse d'erreur au client en utilisant le code d'état spécifié, puis efface le tampon. |
| 13 | void sendError(int sc, String msg)Envoie une réponse d'erreur au client en utilisant le code d'état et le message spécifiés. |
| 14 | void sendRedirect(String location)Envoie une réponse de redirection temporaire au client en utilisant l'URL spécifiée. |
| 15 | void setBufferSize(int size)Définit la taille du tampon du corps de la réponse. |
| 16 | void setCharacterEncoding(String charset)Spécifie l'encodage de caractères de la réponse (jeu de caractères MIME), tel que UTF-8. |
| 17 | void setContentLength(int len)Spécifie la longueur du contenu de la réponse dans les servlets HTTP. Cette méthode est utilisée pour définir l'en-tête HTTP Content-Length. |
| 18 | void setContentType(String type)Définit le type de contenu de la réponse, si la réponse n'a pas encore été validée. |
| 19 | void setDateHeader(String name, long date)Définit l'en-tête de réponse à l'aide du nom et de la date spécifiés. |
| 20 | void setHeader(String name, String value)Définit l'en-tête de réponse à l'aide du nom et de la valeur spécifiés. |
| 21 | void setIntHeader(String name, int value)Définit une valeur int pour l'en-tête portant le nom spécifié. |
| 22 | void setLocale(Locale loc)Définit les paramètres régionaux de la réponse, si la réponse n'a pas encore été validée. |
| 23 | void setStatus(int sc)Définit le code d'état de la réponse. |
HTTP Response Header Program Example
L'exemple suivant utilise la méthode setIntHeader() et la méthode setRefreshHeader() pour simuler une horloge numérique :
<%@ 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>Example(example.com)</title>
</head>
<body>
<h2>自动刷新实例</h2>
<%
// 设置每隔5秒自动刷新
response.setIntHeader("Refresh", 5);
// 获取当前时间
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("当前时间: " + CT + "\n");
%>
</body>
</html>
Enregistrez le code ci-dessus sous main.jsp, puis accédez-y via un navigateur. Il affichera l'heure système actuelle toutes les 5 secondes.
Nous pouvons regarder la démo GIF suivante :

Vous pouvez également modifier vous-même le code ci-dessus et essayer d'utiliser d'autres méthodes pour mieux comprendre.
Autres extensions