Heim  >  Artikel  >  Java  >  Integrierte JSP-Objekte: Verwendung von pageContext-Bereichsobjekten

Integrierte JSP-Objekte: Verwendung von pageContext-Bereichsobjekten

php是最好的语言
php是最好的语言Original
2018-08-08 16:10:188159Durchsuche

Was sind die integrierten Objekte von JSP? Welche Funktionen haben sie? In diesem Artikel werden die neun integrierten Objekte von JSP erwähnt, einschließlich einer detaillierten Einführung in das pageContext-Objekt. Es stellt die laufende Umgebung der JSP-Seite dar Es kapselt nicht nur die Referenzen auf die anderen acht impliziten Objekte, sondern ist auch selbst ein Domänenobjekt (Container), das zum Speichern von Daten verwendet werden kann. Andere Objekte können auch über pageContext abgerufen werden. Die spezifische Verwendung wird unten erläutert.

1. JSP-Funktionsprinzip

Wenn auf jede JSP-Seite zum ersten Mal zugegriffen wird, übergibt der WEB-Container die Anfrage an die JSP Engine (d. h. ein Java-Programm) zur Verarbeitung. Die JSP-Engine übersetzt die JSP zunächst in ein _jspServlet (im Wesentlichen ein Servlet) und ruft es dann entsprechend der Servlet-Aufrufmethode auf.
Da JSP beim ersten Zugriff in ein Servlet übersetzt wird, ist der erste Zugriff normalerweise langsamer. Wenn die JSP-Engine beim zweiten Zugriff jedoch feststellt, dass sich die JSP nicht geändert hat, übersetzt sie sie nicht mehr. Rufen Sie es jedoch direkt auf, sodass die Ausführungseffizienz des Programms nicht beeinträchtigt wird.
Wenn die JSP-Engine das der JSP entsprechende _jspServlet aufruft, übergibt oder erstellt sie 9 Objekte im Zusammenhang mit der Webentwicklung, die _jspServlet verwenden kann. Um Entwicklern das Erhalten von Verweisen auf diese Webobjekte beim Schreiben von JSP-Seiten zu erleichtern, haben die Designer der JSP-Technologie speziell 9 entsprechende Variablen definiert. Entwickler können über diese Variablen schnell Verweise auf diese 9 Objekte in JSP-Seiten erhalten.

2. Lernen Sie die neun integrierten Objekte kennen

tr> tr>6java.lang.Object
NEIN. Eingebautes Objekt Typ
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 request javax.servlet.http.HttpServletRequest
3 Antwort javax.servlet.http.HttpServletResponse td>
4 Sitzung javax.servlet.http.HttpSession
5 Anwendung javax.servlet.ServletContext
config javax.servlet.ServletConfig
7 out javax.servlet.jsp.JspWriter
8 Seite
9 Ausnahme java.lang.Throwable td>

 

Objekte wie Anfrage, Antwort, Sitzung, Anwendung und Konfiguration wurden bereits ausführlich vorgestellt. Hier konzentrieren wir uns auf die verbleibenden pageContext-Objekte, Out-Objekte und Seitenobjekte.

3. Anweisungen zur Verwendung integrierter Objekte

3.1. Seitenobjekt

Seitenobjekt stellt das aktuelle JSP Seite kann als Objekt selbst verstanden werden, das heißt: Behandeln Sie eine JSP als Objekt. Das Seitenobjekt wird in der Entwicklung selten verwendet. Verstehen Sie es einfach

3.2, Out-Objekt

Das Out-Objekt wird zum Senden von Textdaten an den Client verwendet.

Das Out-Objekt wird durch Aufrufen der getOut-Methode des pageContext-Objekts zurückgegeben. Seine Funktion und Verwendung sind dem von der ServletResponse.getWriter-Methode zurückgegebenen PrintWriter-Objekt sehr ähnlich.
Der Typ des Out-Objekts in der JSP-Seite ist JspWriter und entspricht einem PrintWriter mit Caching-Funktion. Durch Festlegen des Pufferattributs der Seitenanweisung der JSP-Seite kann der Cache angepasst oder sogar geschlossen werden.
Nur wenn Inhalt in das Out-Objekt geschrieben wird und eine der folgenden Bedingungen erfüllt ist, ruft das Out-Objekt die Methode ServletResponse.getWriter auf und der Inhalt im Puffer des Out-Objekts wird tatsächlich über das PrintWriter-Objekt geschrieben von dieser Methode zurückgegeben. Geben Sie den von der Servlet-Engine bereitgestellten Puffer ein:

  • Legen Sie das Pufferattribut der Seitenanweisung fest, um die Caching-Funktion des Out-Objekts zu deaktivieren

  • Out-Objekt Der Puffer ist voll

  • Die gesamte JSP-Seite endet

Out-Objekt-Funktionsprinzipdiagramm

 

Integrierte JSP-Objekte: Verwendung von pageContext-Bereichsobjekten

3.3. pageContext-Objekt

Das pageContext-Objekt ist das wichtigste Objekt in der JSP-Technologie. Es repräsentiert die laufende Umgebung der JSP-Seite die anderen acht impliziten Objekte, aber auch sich selbst. Es ist auch ein Domänenobjekt (Container), das zum Speichern von Daten verwendet werden kann. Darüber hinaus kapselt dieses Objekt auch einige allgemeine Vorgänge, die häufig bei der Webentwicklung auftreten, wie z. B. das Einführen und Springen zu anderen Ressourcen, das Abrufen von Attributen in anderen Domänenobjekten usw.

3.4. Erhalten Sie andere Objekte über pageContext

  • getException-Methode gibt implizites Ausnahmeobjekt zurück

  • getPage-Methode gibt implizites Seitenobjekt zurück

  • getRequest-Methode gibt implizites Anforderungsobjekt zurück

  • getResponse-Methode gibt implizites Antwortobjekt zurück

  • getServletConfig-Methode gibt zurück config implizites Objekt

  • getServletContext-Methode gibt implizites Anwendungsobjekt zurück

  • getSession-Methode gibt implizites Sitzungsobjekt zurück

  • Die getOut-Methode gibt das implizite Out-Objekt zurück

3.5. Die Bedeutung von pageContext, der andere 8 integrierte Objekte kapselt

Wenn während des Programmiervorgangs, übergeben Sie das pageContext-Objekt Zu einem gewöhnlichen Java-Objekt kann dieses Java-Objekt dann 8 implizite Objekte abrufen. Zu diesem Zeitpunkt kann dieses Java-Objekt mit dem Browser interagieren und dieses Java-Objekt wird zu einer dynamischen Webressource. Dies ist die Bedeutung der Kapselung von pageContext Unter welchen Umständen muss pageContext an eine andere Java-Klasse übergeben werden? Entwicklung, Java-Code darf nicht auf der JSP-Seite erscheinen, dann sollten wir einen Weg finden, den Java-Code zu entfernen. Wir können ein benutzerdefiniertes Tag entwickeln, um den Java-Code zu entfernen Schreiben Sie auf der Seite zunächst eine Java-Klasse um das benutzerdefinierte Tag. Wenn die JSP-Engine das benutzerdefinierte Tag ausführt, wird beim Aufrufen der Java-Klasse das pageContext-Objekt übergeben Da das pageContext-Objekt Verweise auf die anderen acht impliziten Objekte kapselt, können die acht impliziten Objekte in der JSP-Seite (Anfrage, Antwort, Konfiguration, Anwendung, Ausnahme, Sitzung) in dieser Java-Klasse verwendet werden. Das PageContext-Objekt ist besonders wichtig bei der Entwicklung benutzerdefinierter JSP-Tags.

3.6. pageContext als Domänenobjekt

Das pageContext-Objekt kann als Container verwendet werden, sodass einige Daten im pageContext-Objekt gespeichert werden können.

Gemeinsame Methoden von pageContext-Objekten

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

Mit dieser Methode können Sie Attribute in jeder Domäne finden Sehen Sie sich die Beschreibung dieser Methode in der API dieser Methode an:

Sucht nach dem benannten Attribut in Seite, Anfrage, Sitzung (falls gültig) und Anwendungsbereich(en) der Reihe nach und gibt den zugehörigen Wert oder null zurück.

  当要查找某个属性时,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的内置对象详解

Das obige ist der detaillierte Inhalt vonIntegrierte JSP-Objekte: Verwendung von pageContext-Bereichsobjekten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn