Maison  >  Article  >  Java  >  Objets intégrés jsp : utilisation des objets de portée pageContext

Objets intégrés jsp : utilisation des objets de portée pageContext

php是最好的语言
php是最好的语言original
2018-08-08 16:10:188109parcourir

Quels sont les objets intégrés de JSP ? Quelles sont leurs fonctions ? Cet article mentionne les neuf objets intégrés de JSP, y compris une introduction détaillée à l'objet pageContext. L'objet pageContext est l'objet le plus important de la technologie JSP. Il représente l'environnement d'exécution de la page JSP. non seulement encapsule En plus des références aux huit autres objets implicites, il s'agit également d'un objet de domaine (conteneur) lui-même, qui peut être utilisé pour sauvegarder des données. D'autres objets peuvent également être obtenus via pageContext. L'utilisation spécifique est expliquée ci-dessous.

1. Principe de fonctionnement de JSP

Lors du premier accès à chaque page JSP, le conteneur WEB transmettra la requête à la JSP moteur (c’est-à-dire un programme Java) à traiter. Le moteur JSP traduit d'abord le JSP en un _jspServlet (essentiellement un servlet), puis l'appelle selon la méthode d'appel du servlet.
Puisque JSP sera traduit en servlet lors du premier accès, le premier accès sera généralement plus lent, mais pour le deuxième accès, si le moteur JSP constate que le JSP n'a pas changé, il ne le traduira plus, mais appelez-le directement, donc l'efficacité d'exécution du programme ne sera pas affectée.
Lorsque le moteur JSP appelle le _jspServlet correspondant à JSP, il transmettra ou créera 9 objets liés au développement web pour que _jspServlet puisse les utiliser. Afin de faciliter aux développeurs l'obtention de références à ces objets Web lors de l'écriture de pages JSP, les concepteurs de la technologie JSP ont spécifiquement défini 9 variables correspondantes. Les développeurs peuvent rapidement obtenir des références à ces 9 objets dans les pages JSP via ces variables.

2. Apprenez à connaître les neuf objets intégrés

tr> tr>6java.lang.Object
NON. Objet intégré Tapez
1
NO. 内置对象 类型
1 pageContext javax.servlet.jsp.PageContext
2 request javax.servlet.http.HttpServletRequest
3 response javax.servlet.http.HttpServletResponse
4 session javax.servlet.http.HttpSession
5 application javax.servlet.ServletContext
6 config javax.servlet.ServletConfig
7 out javax.servlet.jsp.JspWriter
8 page java.lang.Object
9 exception java.lang.Throwable
pageContext
javax.servlet.jsp.PageContext
2 requête javax.servlet.http.HttpServletRequest
3 réponse javax.servlet.http.HttpServletResponse td>
4 session javax.servlet.http.HttpSession
5 application javax.servlet.ServletContext
config javax.servlet.ServletConfig
7 sortie javax.servlet.jsp.JspWriter
8 page
9 exception java.lang.Throwable td>

 

Les objets tels que la requête, la réponse, la session, l'application et la configuration ont déjà été présentés en détail. Ici, nous nous concentrons sur les objets pageContext restants, les objets out et les objets page.

3. Instructions d'utilisation des objets intégrés

3.1 Objet Page

L'objet Page représente le JSP page , peut être comprise comme un objet lui-même, c'est-à-dire : traiter une JSP comme un objet. L'objet page est rarement utilisé en développement, comprenez-le simplement

3.2, objet out

L'objet out est utilisé pour envoyer des données texte au client.

L'objet out est renvoyé en appelant la méthode getOut de l'objet pageContext. Sa fonction et son utilisation sont très similaires à l'objet PrintWriter renvoyé par la méthode ServletResponse.getWriter.
Le type d'objet out dans la page JSP est JspWriter. JspWriter est équivalent à un PrintWriter avec fonction de mise en cache. La définition de l'attribut buffer de l'instruction page de la page JSP peut ajuster la taille de son cache ou même fermer son cache.
Ce n'est que lorsque le contenu est écrit dans l'objet out et que l'une des conditions suivantes est remplie que l'objet out appellera la méthode ServletResponse.getWriter et que le contenu dans le tampon de l'objet out sera réellement écrit via l'objet PrintWriter. renvoyé par cette méthode. Entrez le tampon fourni par le moteur Servlet :

  • Définissez l'attribut buffer de l'instruction page pour désactiver la fonction de mise en cache de l'objet out

  • objet out Le tampon est plein

  • La page JSP entière se termine

Diagramme du principe de fonctionnement de l'objet Out

 

Objets intégrés jsp : utilisation des objets de portée pageContext

3.3. Objet pageContext

L'objet pageContext est l'objet le plus important de la technologie JSP. Il représente l'environnement d'exécution de la page JSP. huit autres objets implicites, mais aussi lui-même. C'est aussi un objet de domaine (conteneur) qui peut être utilisé pour sauvegarder des données. De plus, cet objet encapsule également certaines opérations courantes souvent impliquées dans le développement Web, telles que l'introduction et le passage à d'autres ressources, la récupération d'attributs dans d'autres objets de domaine, etc.

3.4. Obtenir d'autres objets via pageContext

  • La méthode getException renvoie un objet implicite d'exception

  • La méthode getPage renvoie un objet implicite de page

  • La méthode getRequest renvoie un objet implicite de demande

  • La méthode getResponse renvoie un objet implicite de réponse

  • La méthode getServletConfig renvoie Objet implicite de configuration

  • La méthode getServletContext renvoie l'objet implicite de l'application

  • La méthode getSession renvoie l'objet implicite de session

  • La méthode getOut renvoie l'objet implicite out

3.5 La signification de pageContext encapsulant 8 autres objets intégrés

Si pendant le processus de programmation, passez l'objet pageContext. à un objet java ordinaire, alors cet objet java pourra obtenir 8 objets implicites. A ce moment, cet objet java pourra interagir avec le navigateur, et cet objet java deviendra une ressource web dynamique. C'est la signification de l'encapsulation de pageContext. 8 autres objets intégrés. Celui à qui vous transmettez pageContext peut devenir une ressource Web dynamique. Alors, dans quelles circonstances doit-il transmettre pageContext à une autre classe Java ? développement, le code java n'est pas autorisé à apparaître sur la page jsp. Si le code java apparaît sur la page jsp, alors nous devrions trouver un moyen de supprimer le code java. Nous pouvons développer une balise personnalisée pour supprimer le jsp Pour le code java. la page, écrivez d'abord une classe java autour de la balise personnalisée. Lorsque le moteur jsp exécute la balise personnalisée, il appellera la classe java écrite autour de la balise personnalisée. Lors de l'appel de la classe java, il transmettra l'objet pageContext pour ce java. classe, puisque l'objet pageContext encapsule les références aux huit autres objets implicites, les huit objets implicites de la page jsp (requête, réponse, configuration, application, exception, session) peuvent être utilisés dans cette classe java, page, out), l'objet pageContext est particulièrement important dans le développement de balises personnalisées jsp.

3.6. pageContext en tant qu'objet de domaine

L'objet pageContext peut être utilisé comme conteneur, afin que certaines données puissent être stockées dans l'objet pageContext.

Méthodes courantes des objets pageContext

       java.lang.Object findAttribute(java.lang.String name)

Concentrez-vous sur la méthode findAttribute, qui est utilisée pour rechercher des attributs dans chaque domaine, vérifiez la API de cette méthode pour voir la description de cette méthode :

Recherche l'attribut nommé dans la page, la requête, la session (si valide) et le(s) champ(s) d'application dans l'ordre et renvoie la valeur associée ou nulle
.

  当要查找某个属性时,findAttribute方法按照查找顺序"page→request→session→application"在这四个对象中去查找,只要找到了就返回属性值,如果四个对象都没有找到要查找的属性,则返回一个null。

范例:使用pageContext的findAttribute方法查找属性值

 
 
 
 
     pageContext的findAttribute方法查找属性值
 
 
     
 
                                    
 pageContext.findAttribute方法查找到的属性值:
 pageContext对象的name1属性:
 request对象的name2属性:
 session对象的name3属性:
 application对象的name4属性:
 查找不存在的name5属性:
 
 使用EL表达式进行输出:
 pageContext对象的name1属性:${name1}
 request对象的name2属性:${name2}
 session对象的name3属性:${name3}
 application对象的name4属性:${name4}
 不存在的name5属性:${name5}

运行结果:

  EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、 session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。

pageContext对象中封装了访问其它域的方法

  java.lang.Object getAttribute(java.lang.String name,   setAttribute(java.lang.String name, java.lang.Object value,   removeAttribute(java.lang.String name, scope)

代表各个域的常量

    PageContext.PAGE_SCOPE

范例:pageContext访问其它域

 
 
 
 
     pageContext访问其它域
 
 
       
 
                      
 取出存放在session对象中的属性值:
 第一种做法:使用pageContext.getAttribute("attributeName",PageContext.SESSION_SCOPE);去取出session对象中值
 姓名:
 第二种做法:使用session.getAttribute("attributeName");去取出session对象中值
 姓名:  

3.7、PageContext引入和跳转到其他资源

  PageContext类中定义了一个forward方法(用来跳转页面)和两个include方法(用来引入页面)来分别简化和替代RequestDispatcher.forward方法和include方法。
  方法接收的资源如果以“/”开头, “/”代表当前web应用。

范例:使用pageContext的forward方法跳转到其他页面

 
 
 
 
     使用pageContext的forward方法跳转页面

运行结果如下:

1 pageContext.forward("/pageContextDemo05.jsp");

  这种写法是用来简化和替代pageContext.getRequest().getRequestDispatcher("/pageContextDemo05.jsp").forward(request, response);这种写法的。在实际开发中,使用pageContext.forward(relativeUrlPath)方法跳转页面用得不多,主要是因为要在Jsp页面中嵌套java代码,所以这种做法简单了解一下即可,在开发中,要想从一个Jsp页面采用服务器端跳转的方式跳转到另一个Jsp页面,那么一般会使用标签,标签用于把请求转发给另外一个资源。

范例:使用pageContext的include方法引入资源

 
 
 
     使用pageContext的include方法引入资源

运行结果:

   在实际开发中,使用pageContext的include方法引入页面这种做法也很少用,一般都使用jsp:include标签引入资源,因此这种做法了解一下即可。

相关推荐:

JSP的内部对象

js的内置对象详解

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn