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éponseDescription
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
1String encodeRedirectURL(String url)


Encodez l'URL utilisée par la méthode sendRedirect()
2String encodeURL(String url)


Encodez l'URL et renvoyez l'URL contenant l'ID de session
3booléen contientEn-tête(Nom de la chaîne)


Renvoie si l'en-tête de réponse spécifié existe
4booléen isCommit()


Renvoie si la réponse a été soumise au client
5annuler addCookie(Cookie cookie)


Ajoutez le cookie spécifié à la réponse
6void addDateHeader(Nom de la chaîne, date longue)


Ajoutez l'en-tête de réponse et la valeur de date du nom spécifié
                         7void addHeader(Nom de la chaîne, valeur de la chaîne)


Ajoutez l'en-tête de réponse et la valeur du nom spécifié
                         8void addIntHeader(Nom de la chaîne, valeur int)


Ajoutez l'en-tête de réponse et la valeur int du nom spécifié
9void flushBuffer()


Écrivez tout contenu mis en cache au client
10annuler la réinitialisation()


Effacez toutes les données de n'importe quel cache, y compris les codes d'état et divers en-têtes de réponse
                     11void resetBuffer()


Effacer les données de base du cache, à l'exclusion des en-têtes de réponse et des codes d'état
12void sendError(int sc)


Envoyez une réponse d'erreur au client avec le code d'état spécifié, puis videz le cache
13void sendError(int sc, String msg)


Envoyer une réponse d'erreur au client en utilisant le code d'état et le message spécifiés
                         14void sendRedirect (emplacement de la chaîne)


Envoyer une réponse indirecte temporaire au client en utilisant l'URL spécifiée
                          15void setBufferSize(taille int)


Définir la taille du cache du corps de la réponse
16void setCharacterEncoding(String charset)


Spécifiez le jeu de codage de réponse (jeu de caractères MIME), tel que UTF-8
17void setContentLength(int len)


Spécifiez 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
. 18void setContentType(Type de chaîne)


Définissez le type de contenu de la réponse, si la réponse n'a pas encore été soumise
19void setDateHeader(Nom de la chaîne, date longue)


Définissez le nom et le contenu de l'en-tête de réponse en utilisant le nom et la valeur spécifiés
                20void setHeader(Nom de la chaîne, valeur de la chaîne)


Définissez le nom et le contenu de l'en-tête de réponse en utilisant le nom et la valeur spécifiés
                21void setIntHeader(Nom de la chaîne, valeur int)


Définissez le nom et le contenu de l'en-tête de réponse en utilisant le nom et la valeur spécifiés
                22void setLocale(Locale loc)


Définir les paramètres régionaux de la réponse, si la réponse n'a pas encore été soumise
                       23void setStatus(int sc)


Définir le code d'état de la réponse

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 :

jsp1.gif

Vous pouvez également modifier le code ci-dessus vous-même et essayer d'autres méthodes pour obtenir une expérience plus approfondie. .