Réponse du serveur JSP
L'objet de réponse de réponse 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 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. Correspond au code d'état, tel que OK.
Le tableau suivant résume les parties les plus utiles des en-têtes de réponse HTTP1.1, que vous verrez souvent dans la programmation réseau :
En-tête de réponse | Description |
---|---|
Autoriser | Précisez les méthodes de requête supportées par le serveur (GET, POST, etc.) |
Cache-Control | Spécifie les circonstances dans lesquelles les documents de réponse peuvent être mis en cache en toute sécurité. Habituellement, la valeur est publique, privée 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. closevalue 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 | Préciser les règles d'encodage de la page lors de la transmission |
Contenu-Langue | La langue utilisée pour exprimer le document, comme en, en-us,, ru, etc. |
Longueur du contenu | Indique le nombre d'octets dans la réponse. Utile uniquement si le navigateur utilise une connexion HTTP persistante (keep-alive) |
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 en cache le document et fournir un en-tête de requête If-Modified-Since |
dans les requêtes suivantes. Localisation | 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 les nouveaux documents |
Actualiser | 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 pour que la demande soit répondue |
Set-Cookie | Indiquez le cookie correspondant à la page courante |
Classe HttpServletResponse
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 traitement 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 :
S.N.. | Méthode & Description |
---|---|
1 | String encodeRedirectURL(String url) |
2 | String encodeURL(String url) |
3 | booléen contientEn-tête(Nom de la chaîne) |
4 | booléen isCommit() |
5 | annuler addCookie(Cookie cookie) |
6 | void addDateHeader(Nom de la chaîne, date longue) |
7 | void addHeader(Nom de la chaîne, valeur de la chaîne) |
8 | void addIntHeader(Nom de la chaîne, valeur int) |
9 | void flushBuffer() |
10 | annuler la réinitialisation() |
11 | void resetBuffer() |
12 | void sendError(int sc) |
13 | void sendError(int sc, String msg) |
14 | void sendRedirect (emplacement de la chaîne) |
15 | void setBufferSize(taille int) |
16 | void setCharacterEncoding(String charset) |
17 | void setContentLength(int len) |
. 18 | void setContentType(Type de chaîne) |
19 | void setDateHeader(Nom de la chaîne, date longue) |
20 | void setHeader(Nom de la chaîne, valeur de la chaîne) |
21 | void setIntHeader(Nom de la chaîne, valeur int) |
22 | void setLocale(Locale loc) |
23 | void setStatus(int sc) |
Exemple de programme d'en-tête de réponse HTTP
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>php中文网(php.cn)</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 parcourir le serveur pour y accéder. Il affichera l’heure actuelle du système toutes les 5 secondes.
Nous pouvons jeter un œil à la démonstration Gif suivante :
Vous pouvez également modifier le code ci-dessus vous-même et essayer d'autres méthodes pour obtenir une expérience plus approfondie. .