Objets implicites JSP

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. Requêter
  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 l'objet de la classe javax.servlet.jsp.jspWriter
  • En travaillant avec servlet, nous avons besoin d'un objet printwriter

Mise en situation :

<%@ 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 :

Ligne de code 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.

Mise en situation :

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:

Ligne de code 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

Ligne de code 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

Mise en situation :

<%@ 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 :

Ligne de code 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

Mise en situation :

Web.xml (spécifie le nom et le mappage 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

Ligne de code 14-17 : Dans web.xml, nous avons un mappage des servlets vers les classes.

Implicit_jsp5.jsp

Ligne de code 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 « GuruServlet » car le nom est présent dans 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.

Mise en situation :

<%@ 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.

Mise en situation :

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

Ligne de code 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).

Ligne de code 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

Ligne de code 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
  • Requêter
  • Session
  • Application

Mise en situation :

<%@ 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 :

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

  • ACTIVITES
  • Propositions
  • 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.

Ligne de code 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.

Mise en situation :

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 :

Ligne de code 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.Mise en situation :
<%@ 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 :

Ligne de code 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.