L'objet Response transmet principalement les résultats traités par le conteneur JSP au client. Vous pouvez définir l'état HTTP et envoyer des données au client via la variable de réponse, telles que les cookies, les informations d'en-tête du fichier HTTP, etc.
Une réponse typique ressemble à ceci :
HTTP/1.1 200 OKContent-Type : text/htmlHeader2 : ...HeaderN : ... (Ligne vierge)<!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, que vous verrez souvent dans la programmation réseau :
en-tête de réponse | décrire |
---|---|
Permettre | Spécifiez les méthodes de requête prises en charge par le serveur (GET, POST, etc.) |
Contrôle du cache | Spécifie les circonstances dans lesquelles les documents de réponse peuvent être mis en cache en toute sécurité. Habituellement, la valeur est public , private ou no-cache , etc. Public signifie que le document peut être mis en cache et Privé signifie que le document n'est servi qu'à un seul utilisateur et ne peut utiliser que le cache privé. No-cache signifie que le document n'est pas mis en cache. |
Connexion | Indique au navigateur s'il doit utiliser des connexions HTTP persistantes. La valeur close indique au navigateur de ne pas utiliser de connexions HTTP persistantes, tandis que keep-alive signifie utiliser des connexions persistantes. |
Disposition du contenu | Laissez le navigateur demander à l'utilisateur de stocker la réponse sur le disque sous le nom donné |
Encodage de contenu | Spécifier les règles d'encodage de la page lors de la transmission |
Contenu-Langue | La langue utilisée pour exprimer le document, telle que en, en-us, ru, etc. |
Longueur du contenu | Indique le nombre d'octets dans la réponse. Utile uniquement si le navigateur utilise des connexions HTTP persistantes |
Type de contenu | Indique le type MIME utilisé par le document |
Expire | Indiquer quand expirer et supprimer du cache |
Dernière modification | Indique quand le document a été modifié pour la dernière fois. Le client peut mettre le document en cache et fournir un en-tête de requête If-Modified-Since dans les requêtes ultérieures |
Emplacement | Dans les 300 secondes, y compris toutes les adresses de réponse avec un code d'état, le navigateur se reconnectera automatiquement et récupérera de nouveaux documents. |
Rafraîchir | Indique à quelle fréquence le navigateur demande des mises à jour de la page. |
Réessayer après | Utilisé avec 503 (Service non disponible) pour indiquer à l'utilisateur combien de temps il faudra avant que la demande ne reçoive une réponse. |
Set-Cookie | Indiquer le cookie correspondant à la page courante |
L'objet de réponse est une instance de la classe javax.servlet.http.HttpServletResponse. Tout comme le serveur crée l'objet de requête, il crée également une réponse client.
L'objet de réponse définit l'interface de gestion de la création des en-têtes HTTP. En utilisant cet objet, les développeurs peuvent ajouter de nouveaux cookies ou horodatages, 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. Ces méthodes sont fournies par la classe HttpServletResponse :
SN | Méthode et 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 containHeader(String name) renvoie si l'en-tête de réponse spécifié existe |
4 | boolean isComMIT() renvoie si la réponse a été soumise au client |
5 | void addCookie(Cookie cookie) ajoute le cookie spécifié à la réponse |
6 | void addDateHeader(String name, long date) ajoute l'en-tête de réponse et la valeur de date du nom spécifié |
7 | void addHeader(String name, String value) ajoute l'en-tête de réponse et la valeur du nom spécifié |
8 | void addIntHeader(String name, int value) ajoute l'en-tête de réponse et la valeur int du nom spécifié |
9 | void flushBuffer() écrit le contenu de n'importe quel cache sur le client |
10 | void reset() efface toutes les données de n'importe quel cache, y compris les codes d'état et divers en-têtes de réponse |
11 | void resetBuffer() efface les données de base du cache, à 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 cache |
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 indirecte 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 le jeu de codage de 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 d'informations 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é soumise |
19 | void setDateHeader(String name, long date) définit le nom et le contenu de l'en-tête de réponse en utilisant le nom et la valeur spécifiés |
20 | void setHeader(String name, String value) définit le nom et le contenu de l'en-tête de réponse en utilisant le nom et la valeur spécifiés |
vingt-et-un | void setIntHeader(String name, int value) définit le nom et le contenu de l'en-tête de réponse en utilisant le nom et la valeur spécifiés |
vingt-deux | void setLocale(Locale loc) définit les paramètres régionaux de la réponse, si la réponse n'a pas encore été soumise |
vingt-trois | void setStatus(int sc) définit le code d'état de la réponse |
L'exemple suivant utilise la méthode setIntHeader() et la méthode setRefreshHeader() pour simuler une horloge numérique :
<%@ page import="java.io.*,java.util.*" %><html><head><title>Exemple d'en-tête d'actualisation automatique</title></head><body><center><h2 >Exemple d'en-tête d'actualisation automatique</h2><% //Définir l'actualisation automatique toutes les 5 secondes Response.setIntHeader("Refresh", 5 //Obtenir l'heure actuelle Calendar Calendar = new GregorianCalendar(); am_pm; int heure = calendrier.get(Calendar.HOUR); int minute = calendrier.get(Calendar.MINUTE); int seconde = calendrier.get(Calendar.SECOND); 0) am_pm = "AM"; sinon am_pm = "PM"; String CT = heure+":"+ minute +":"+ seconde +" "+ am_pm; out.println("L'heure actuelle est : " + CT + "n"); %></center></body></html>
Enregistrez le code ci-dessus sous main.jsp et accédez-y via votre navigateur. Il affichera l’heure actuelle du système toutes les 5 secondes.
Les résultats en cours d'exécution sont les suivants :
Exemple d'en-tête d'actualisation automatiqueL'heure actuelle est : 21:44:50
Vous pouvez également modifier vous-même le code ci-dessus et essayer d’autres méthodes pour mieux comprendre.