Objets implicites JSP

⚡ Résumé intelligent

Les objets implicites JSP sont des variables prédéfinies que le conteneur de servlets crée automatiquement lors de la traduction de la page, permettant aux développeurs d'accéder aux flux de sortie, aux requêtes, aux réponses, aux sessions et aux données de l'application directement dans une page sans déclaration manuelle ni configuration supplémentaire.

  • 🇧🇷 Objet de sortie : Écrit les données dans le tampon et envoie la sortie au client via la JSP.Writer ruisseau.
  • (I.e. Objet de requête : Une instance de HttpServletRequest qui récupère les paramètres, les en-têtes et les détails du serveur à l'aide de getParameter().
  • 📤 Objet de réponse : Implémente HttpServletResponse pour définir le type de contenu, ajouter des cookies et rediriger le client.
  • ⚙️ Configuration et application : La configuration lit les paramètres d'initialisation à partir du fichier web.xml ; l'application partage les données de contexte sur l'ensemble du déploiement.
  • 🇧🇷 Session et PageContext : La session conserve les attributs de l'utilisateur d'une page à l'autre ; PageContext gère les attributs à travers les échelles de page, de requête, de session et d'application.
  • ⚠️ Objet d'exception : Une exception Throwable, disponible uniquement sur les pages d'erreur, qui signale les erreurs d'exécution telles que ArrayIndexOutOfBounds.

Qu’est-ce que l’objet implicite JSP ?

  • Les objets implicites JSP sont créés pendant la phase de traduction du JSP vers le servlet.
  • Ces objets peuvent être directement utilisés dans les scripts qui vont dans la méthode de service.
  • Ils sont créés automatiquement par le conteneur et sont accessibles à l'aide d'objets.

Combien d’objets implicites sont disponibles dans JSP ?

Il existe 9 types d'objets implicites disponibles dans le conteneur :

  1. de stock
  2. Demander
  3. Réponse
  4. Config
  5. Application
  6. Session
  7. PageContexte
  8. Page
  9. Exception

Étudions un par un

1) Sortie

  • Out est l'un des objets implicites pour écrire les données dans le tampon et envoyer la sortie au client en réponse
  • L'objet Out nous permet d'accéder au flux de sortie de la servlet
  • Out est un objet de javax.servlet.jsp.jspWriter classe
  • En travaillant avec servlet, nous avons besoin d'un objet printwriter

Exemple :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru JSP1</title>
</head>
<body>
<% int num1=10;int num2=20;
out.println("num1 is " +num1);
out.println("num2 is "+num2);
%>
</body>
</html>

Explication du code :

Code Ligne 11-12– out est utilisé pour imprimer dans le flux de sortie

Lorsque nous exécutons le code ci-dessus, nous obtenons le résultat suivant :

En JSP

Sortie :

  • En sortie, nous obtenons les valeurs de num1 et num2

2) Demande

  • L'objet de requête est une instance de java.servlet.http.HttpServletRequest et c'est l'un des arguments de la méthode de service.
  • Il sera créé par conteneur pour chaque requête.
  • Il sera utilisé pour demander des informations telles que le paramètre, les informations d'en-tête, le nom du serveur, etc.
  • Il utilise getParameter() pour accéder au paramètre de requête.

Exemple :

Implicit_jsp2.jsp (formulaire à partir duquel la demande est envoyée à guru.jsp)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru form JSP2</title>
</head>
<body>
<form action="guru.jsp">
<input type="text" name="username">
<input type="submit" value="submit">
</form>
</body>
</html>

Guru.jsp (où l'action est effectuée)

Requête en JSP

Explication du code:

Code Lignes 10-13 : Dans implicit_jsp2.jsp(form), la requête est envoyée, donc le nom d'utilisateur variable est traité et envoyé à guru.jsp qui est l'action de JSP.

Guru.jsp

Code Lignes 10-11 : C'est l'action jsp où la demande est traitée et le nom d'utilisateur est extrait du formulaire jsp.

Lorsque vous exécutez le code ci-dessus, vous obtenez le résultat suivant

Sortie :

Requête en JSP

Lorsque vous écrivez un test et cliquez sur le bouton Soumettre, vous obtenez le résultat suivant « Test de bienvenue ».

Requête en JSP

3) Réponse

  • « Response » est une instance de classe qui implémente l'interface HttpServletResponse
  • Le conteneur génère cet objet et passe à la méthode _jspservice() en tant que paramètre
  • Un « objet de réponse » sera créé par le conteneur pour chaque requête.
  • Il représente la réponse qui peut être apportée au client
  • L'objet implicite de réponse est utilisé pour saisir le contenu, ajouter un cookie et rediriger vers la page de réponse

Exemple :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru JSP4</title>
</head>
<body>
<%response.setContentType("text/html"); %>
</body>
</html>

Explication du code :

Code Ligne 11: Dans l'objet de réponse, nous pouvons définir le type de contenu

Ici, nous définissons uniquement le type de contenu dans l'objet de réponse. Par conséquent, il n’y a aucune sortie pour cela.

4) Configuration

  • « Config » est du type java.servlet.servletConfig
  • Il est créé par le conteneur pour chaque page jsp
  • Il est utilisé pour obtenir le paramètre d'initialisation dans web.xml

Exemple :

Web.xml (spécifie le nom et la carte)ping du servlet)

Configuration en JSP

Implicit_jsp5.jsp (obtention de la valeur du nom du servlet)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru JSP5</title>
</head>
<body>
<% String servletName = config.getServletName();
out.println("Servlet Name is " +servletName);%>
</body>
</html>

Explication du code :

Dans web.xml

Code Ligne 14-17: Dans web.xml, nous avons une carteping des servlets aux classes.

Implicit_jsp5.jsp

Code Ligne 10-11: Pour obtenir le nom du servlet dans JSP, nous pouvons utiliser config.getServletName, ce qui nous aidera à obtenir le nom du servlet.

Lorsque vous exécutez le code ci-dessus, vous obtenez le résultat suivant :

Réponse en JSP

Sortie :

  • Le nom du servlet est «GuruLe nom « Servlet » figure dans le fichier web.xml.

5) Application

  • L'objet Application (ligne de code 10) est une instance de javax.servlet.ServletContext et il est utilisé pour obtenir les informations de contexte et les attributs dans JSP.
  • L'objet Application est créé par conteneur, un par application, lorsque l'application est déployée.
  • L'objet Servletcontext contient un ensemble de méthodes utilisées pour interagir avec le conteneur de servlet. Nous pouvons trouver des informations sur le conteneur de servlet.

Exemple :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Implicit JSP6</title>
</head>
<body>
<% application.getContextPath(); %>
</body>
</html>

Explication du code :

  • Dans le code ci-dessus, l'attribut d'application permet d'obtenir le chemin contextuel de la page JSP.

6) Séance

  • La session contient l'objet « httpsession » (ligne de code 10).
  • L'objet de session est utilisé pour obtenir, définir et supprimer des attributs dans la portée de la session et également pour obtenir des informations sur la session.

Exemple :

Implicit_jsp7 (l'attribut est défini)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit JSP</title>
</head>
<body>
<% session.setAttribute("user","GuruJSP"); %>
<a href="implicit_jsp8.jsp">Click here to get user name</a>
</body>
</html>

Implicit_jsp8.jsp (getAttribute)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>implicit Guru JSP8</title>
</head>
<body>
<% String name = (String)session.getAttribute("user");
out.println("User Name is " +name);
%>
</body>
</html>

Explication du code :

Implicit_jsp7.jsp

Code Ligne 11: nous définissons l'attribut user dans la variable de session, et cette valeur peut être récupérée de la session dans le jsp appelé à partir de celui-ci (_jsp8.jsp).

Code Ligne 12: Nous appelons une autre jsp sur href dans laquelle nous obtiendrons la valeur de l'attribut user qui est défini.

Implicit_jsp8.jsp

Code Ligne 11: Nous obtenons la valeur de l'attribut utilisateur de l'objet de session et affichons cette valeur

Lorsque vous exécutez le code ci-dessus, vous obtenez le résultat suivant :

Session en JSP

Lorsque vous cliquez sur le lien pour le nom d'utilisateur. Vous obtiendrez le résultat suivant.

Session en JSP

Sortie :

  • Lorsque nous cliquons sur le lien donné dans implicit_jsp7.jsp, nous sommes redirigés vers la deuxième page jsp, c'est-à-dire la page (_jsp8.jsp) et nous obtenons la valeur de l'objet de session de l'attribut utilisateur (_jsp7.jsp).

7) Contexte de la page

  • Cet objet est du type pagecontext.
  • Il est utilisé pour obtenir, définir et supprimer les attributs d'une portée particulière

Les scopes sont de 4 types :

  • Page
  • Demander
  • Session
  • Application

Exemple :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru JSP9</title>
</head>
<body>
<% pageContext.setAttribute("student","gurustudent",pageContext.PAGE_SCOPE);
String name = (String)pageContext.getAttribute("student");
out.println("student name is " +name);
%>
</body>
</html>

Explication du code :

Code Ligne 11: nous définissons l'attribut à l'aide de l'objet pageContext, et il a trois paramètres :

  • ACTIVITES
  • Valeur
  • Domaine

Dans le code ci-dessus, la clé est student et la valeur est « gurustudent » tandis que la portée est la portée de la page. Ici, la portée est « page » et elle ne peut être obtenue qu'en utilisant la portée de la page.

Code Ligne 12: Nous obtenons la valeur de l'attribut en utilisant pageContext

Lorsque vous exécutez le code ci-dessus, vous obtenez le résultat suivant :

Contexte de page dans JSP

Sortie :

  • La sortie affichera « le nom de l’étudiant est gurustudent ».

8) Page

  • La variable implicite de page contient l'objet servlet actuellement exécuté pour le jsp correspondant.
  • Agit comme cet objet pour la page jsp actuelle.

Exemple :

Dans cet exemple, nous utilisons l'objet page pour obtenir le nom de la page à l'aide de la méthode toString

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru JSP10</title>
</head>
<body>
<% String pageName = page.toString();
out.println("Page Name is " +pageName);%>
</body>
</html>

Explication du code :

Code Ligne 10-11: Dans cet exemple, nous essayons d'utiliser la méthode toString() de l'objet page et essayons d'obtenir le nom de chaîne de la page JSP.

Lorsque vous exécutez le code, vous obtenez le résultat suivant :

Page en JSP

Sortie :

  • La sortie est le nom de chaîne de la page jsp ci-dessus

9) Exception

  • L'exception est l'objet implicite de la classe jetable.
  • Il est utilisé pour gestion des exceptions dans JSP.
  • L'objet d'exception ne peut être utilisé que dans les pages d'erreur.Exemple :
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru JSP 11</title>
</head>
<body>
<%int[] num1={1,2,3,4};
out.println(num1[5]);%>
<%= exception %>
</body>
</html>

Explication du code :

Code Ligne 10-12 – Il comporte un tableau de nombres, c’est-à-dire num1 avec quatre éléments. Dans la sortie, nous essayons d'imprimer le cinquième élément du tableau à partir de num1, qui n'est pas déclaré dans la liste du tableau. Il est donc utilisé pour obtenir l'objet d'exception du jsp.

Sortie :

Exception dans JSP

Nous obtenons ArrayIndexOfBoundsException dans le tableau où nous obtenons un tableau num1 du cinquième élément.

FAQ

Non. Le conteneur crée automatiquement les neuf objets implicites lors de la phase de traduction. Les développeurs peuvent les utiliser directement dans les scriptlets et la méthode de service sans importer de packages ni déclarer de variables.

Non. Les objets implicites ne sont disponibles que dans les scriptlets et les expressions qui correspondent à la méthode de service. Ils ne peuvent pas être utilisés dans les balises de déclaration JSP, qui génèrent des membres de classe en dehors de cette méthode.

PageContext fonctionne à l'échelle des quatre niveaux d'accès : page, requête, session et application. Il propose les méthodes setAttribute, getAttribute et removeAttribute, ce qui en fait l'objet implicite le plus flexible pour la gestion des données à différents niveaux d'accès.

L'IA peut expliquer chaque objet implicite à l'aide d'exemples, convertir le code des scriptlets en alternatives plus claires et répondre instantanément aux questions de portée. Cela aide les débutants à comprendre quand utiliser correctement les objets requête, session ou application.

Oui. Les outils d'IA peuvent générer des extraits JSP fonctionnels à partir des objets implicites `out`, `request`, `session`, etc., puis expliquer chaque ligne. Les développeurs doivent néanmoins vérifier le résultat pour s'assurer d'une gestion correcte de la portée et de la sécurité.

Résumez cet article avec :