JSP - Réponse du serveur
Dans ce chapitre, nous aborderons la réponse du serveur dans JSP. Lorsqu'un serveur Web répond à une requête HTTP, la réponse se compose généralement d'une ligne d'état, de certains en-têtes de réponse, d'une ligne vide et du document. Une réponse typique ressemble à ceci -
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
(Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>
La ligne d'état se compose de la version HTTP (HTTP/1.1 in the example), un code de statut (200 in the example), et un message très court correspondant au code d'état (OK in the example).
Voici un résumé des en-têtes de réponse HTTP 1.1 les plus utiles qui reviennent au navigateur à partir du serveur Web. Ces en-têtes sont fréquemment utilisés dans la programmation Web -
S.No. | En-tête et description |
---|---|
1 | Allow Cet en-tête spécifie les méthodes de demande (GET, POST, etc.) que le serveur prend en charge. |
2 | Cache-Control Cet en-tête spécifie les circonstances dans lesquelles le document de réponse peut être mis en cache en toute sécurité. Il peut avoir des valeurspublic, private ou no-cache etc. Public signifie que le document peut être mis en cache, Privé signifie que le document est destiné à un seul utilisateur et ne peut être stocké que dans des caches privés (non partagés) et sans cache signifie que le document ne doit jamais être mis en cache. |
3 | Connection Cet en-tête indique au navigateur s'il doit utiliser ou non des connexions HTTP persistantes. Une valeur declose indique au navigateur de ne pas utiliser de connexions HTTP persistantes et keep-alive signifie utiliser des connexions persistantes. |
4 | Content-Disposition Cet en-tête vous permet de demander au navigateur de demander à l'utilisateur d'enregistrer la réponse sur le disque dans un fichier du nom donné. |
5 | Content-Encoding Cet en-tête spécifie la manière dont la page a été codée lors de la transmission. |
6 | Content-Language Cet en-tête indique la langue dans laquelle le document est rédigé. Par exemple,en, en-us, ru, etc. |
sept | Content-Length Cet en-tête indique le nombre d'octets dans la réponse. Ces informations ne sont nécessaires que si le navigateur utilise une connexion HTTP persistante (keep-alive). |
8 | Content-Type Cet en-tête donne le MIME (Multipurpose Internet Mail Extension) type de document de réponse. |
9 | Expires Cet en-tête spécifie l'heure à laquelle le contenu doit être considéré comme obsolète et donc ne plus être mis en cache. |
dix | Last-Modified Cet en-tête indique quand le document a été modifié pour la dernière fois. Le client peut alors mettre en cache le document et fournir une date par unIf-Modified-Since en-tête de demande dans les demandes ultérieures. |
11 | Location Cet en-tête doit être inclus avec toutes les réponses qui ont un code d'état dans les 300. Cela informe le navigateur de l'adresse du document. Le navigateur se reconnecte automatiquement à cet emplacement et récupère le nouveau document. |
12 | Refresh Cet en-tête spécifie à quel moment le navigateur doit demander une page mise à jour. Vous pouvez spécifier la durée en nombre de secondes après laquelle une page sera actualisée. |
13 | Retry-After Cet en-tête peut être utilisé avec un 503 (Service Unavailable) réponse pour indiquer au client dans quel délai il peut répéter sa demande. |
14 | Set-Cookie Cet en-tête spécifie un cookie associé à la page. |
L'objet HttpServletResponse
L'objet de réponse est une instance d'un javax.servlet.http.HttpServletResponse object. Tout comme le serveur crée l'objet de requête, il crée également un objet pour représenter la réponse au client.
L'objet de réponse définit également les interfaces qui traitent de la création de nouveaux en-têtes HTTP. Grâce à cet objet, le programmeur JSP peut ajouter de nouveaux cookies ou horodatages, codes d'état HTTP, etc.
Les méthodes suivantes peuvent être utilisées pour définir l'en-tête de réponse HTTP dans votre programme de servlet. Ces méthodes sont disponibles avec l' objet HttpServletResponse . Cet objet représente la réponse du serveur.
S.No. | Méthode et description |
---|---|
1 | String encodeRedirectURL(String url) Encode l'URL spécifiée à utiliser dans le sendRedirect ou, si l'encodage n'est pas nécessaire, renvoie l'URL inchangée. |
2 | String encodeURL(String url) Encode l'URL spécifiée en y incluant l'ID de session ou, si l'encodage n'est pas nécessaire, renvoie l'URL inchangée. |
3 | boolean containsHeader(String name) Renvoie un booléen indiquant si l'en-tête de réponse nommé a déjà été défini. |
4 | boolean isCommitted() Renvoie un booléen indiquant si la réponse a été validée. |
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 donnés. |
sept | void addHeader(String name, String value) Ajoute un en-tête de réponse avec le nom et la valeur donnés. |
8 | void addIntHeader(String name, int value) Ajoute un en-tête de réponse avec le nom et la valeur entière donnés. |
9 | void flushBuffer() Force tout contenu de la mémoire tampon à être écrit sur le client. |
dix | void reset() Efface toutes les données qui existent dans la mémoire tampon ainsi que le code d'état et les en-têtes. |
11 | void resetBuffer() Efface le contenu du tampon sous-jacent dans la réponse sans effacer les en-têtes ou le code d'état. |
12 | void sendError(int sc) Envoie une réponse d'erreur au client en utilisant le code d'état spécifié et en effaçant la mémoire tampon. |
13 | void sendError(int sc, String msg) Envoie une réponse d'erreur au client en utilisant l'état spécifié. |
14 | void sendRedirect(String location) Envoie une réponse de redirection temporaire au client en utilisant l'URL d'emplacement de redirection spécifiée. |
15 | void setBufferSize(int size) Définit la taille de tampon préférée pour le corps de la réponse. |
16 | void setCharacterEncoding(String charset) Définit le codage de caractères (jeu de caractères MIME) de la réponse envoyée au client, par exemple, sur UTF-8. |
17 | void setContentLength(int len) Définit la longueur du corps du contenu dans la réponse Dans les servlets HTTP; cette méthode définit également l'en-tête HTTP Content-Length. |
18 | void setContentType(String type) Définit le type de contenu de la réponse envoyée au client, si la réponse n'a pas encore été validée. |
19 | void setDateHeader(String name, long date) Définit un en-tête de réponse avec le nom et la valeur de date donnés. |
20 | void setHeader(String name, String value) Définit un en-tête de réponse avec le nom et la valeur donnés. |
21 | void setIntHeader(String name, int value) Définit un en-tête de réponse avec le nom et la valeur entière donnés. |
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 cette réponse. |
Exemple de réponse d'en-tête HTTP
L'exemple suivant utiliserait setIntHeader() méthode à définir Refresh en-tête pour simuler une horloge numérique -
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>Auto Refresh Header Example</title>
</head>
<body>
<center>
<h2>Auto Refresh Header Example</h2>
<%
// Set refresh, autoload time as 5 seconds
response.setIntHeader("Refresh", 5);
// Get current time
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("Current Time is: " + CT + "\n");
%>
</center>
</body>
</html>
Maintenant, mettez le code ci-dessus dans main.jspet essayez d'y accéder. Ceci affichera l'heure actuelle du système toutes les 5 secondes comme suit. Exécutez le JSP. Vous recevrez la sortie suivante: -
Auto Refresh Header Example
Current Time is: 9:44:50 PM
Vous pouvez essayer de travailler sur les autres méthodes de la même manière.