検索
ホームページJava&#&チュートリアルjsp 組み込みオブジェクト: pageContext スコープ オブジェクトの使用

JSP にはどのような組み込みオブジェクトがありますか?この記事では、pageContext オブジェクトの詳細を含め、JSP の 9 つの組み込みオブジェクトについて説明します。このオブジェクトは、JSP ページの実行環境を表します。カプセル化するだけではありません。他の 8 つの暗黙的オブジェクトへの参照に加えて、データを保存するために使用できるドメイン オブジェクト (コンテナー) 自体でもあります。他のオブジェクトも pageContext を通じて取得できます。具体的な使用法については以下で説明します。

1. JSP の動作原理

各 JSP ページに初めてアクセスすると、WEB コンテナはリクエストを JSP エンジン (つまり Java プログラム) に渡して処理します。 JSP エンジンは、まず JSP を _jspServlet (本質的にはサーブレット) に変換し、次にサーブレット呼び出しメソッドに従ってそれを呼び出します。
初めてアクセスするときに JSP はサーブレットに変換されるため、最初のアクセスは通常遅くなりますが、2 回目のアクセスでは、JSP エンジンが JSP が変更されていないと判断すると、変換されなくなります。ただし、直接呼び出すため、プログラムの実行効率には影響しません。
JSP エンジンは、JSP に対応する _jspServlet を呼び出すと、_jspServlet が使用する Web 開発に関連する 9 つのオブジェクトを渡すか、作成します。開発者が JSP ページを作成するときにこれらの Web オブジェクトへの参照を取得しやすくするために、JSP テクノロジの設計者は、これらの変数を通じて JSP ページ内のこれらの 9 つのオブジェクトへの参照を迅速に取得できる 9 つの対応する変数を特別に定義しました。

2. 9 つの組み込みオブジェクトを理解する

HttpServletRequest ttpServletResponseセッションjavax.servlet.http.HttpSessionアプリケーションjavax.servlet.ServletContextconfigjavax.servlet.ServletConfig 8java.lang.Throwable
NO. 組み込みオブジェクト type
1 pageContext javax.servlet .jsp.PageContext
4
5
6
7out javax.servlet.jsp.JspWriter
ページ java.lang.Object 9例外

オブジェクトのリクエスト、レスポンス、セッション、アプリケーション、および構成はすべて以前に作成されています。残りのページコンテキスト. オブジェクト、アウト オブジェクト、ページ オブジェクト。

3. 組み込みオブジェクトの使用手順

3.1. ページ オブジェクト

ページ オブジェクト

は、オブジェクト自体として理解できます。つまり、

JSP を扱います。 をオブジェクトとして扱います。 page オブジェクトは開発ではほとんど使用されません、理解しておいてください 3.2, out オブジェクト out オブジェクトはクライアントにテキストデータを送信するために使用されます。 out オブジェクトは、pageContext オブジェクトの getOut メソッドを呼び出すことによって返されます。その機能と使用法は、ServletResponse.getWriter メソッドによって返される PrintWriter オブジェクトと非常に似ています。 JSPページのoutオブジェクトの型はJspWriterです。JspWriterはキャッシュ機能を備えたPrintWriterと同等で、JSPページのページ命令のバッファ属性を設定することでキャッシュサイズを調整したり、キャッシュをオフにすることもできます。

コンテンツが out オブジェクトに書き込まれ、以下の条件のいずれかが満たされる場合にのみ、out オブジェクトは ServletResponse.getWriter メソッドを呼び出し、このメソッドによって返される PrintWriter オブジェクトを使用して、実際に out オブジェクトのバッファーにコンテンツを書き込みます。 to サーブレット エンジンによって提供されるバッファ内:


ページ ディレクティブのバッファ属性を設定すると、out オブジェクトのキャッシュ機能がオフになります

    out オブジェクトのバッファがいっぱいです
  • JSP 全体ページ終了
  • out オブジェクト 動作原理図
3.3、pageContext オブジェクト

pageContext オブジェクトは、JSP ページの実行環境を表すだけでなく、参照をカプセル化します。他の 8 つの暗黙的オブジェクトに対して、それ自体もドメイン オブジェクト (コンテナ) であり、データを保存するために使用できます。さらに、このオブジェクトは、他のリソースの導入やジャンプ、他のドメイン オブジェクトの属性の取得など、Web 開発によく関係するいくつかの一般的な操作もカプセル化します。

jsp 組み込みオブジェクト: pageContext スコープ オブジェクトの使用3.4. pageContext を通じて他のオブジェクトを取得する

getException メソッドは例外暗黙的オブジェクトを返す

    getPage メソッドはページ暗黙的オブジェクトを返す
  • getRequest メソッドはリクエストの暗黙的オブジェクトを返す
  • getResponse メソッドは応答を返す暗黙的オブジェクト
  • getServletConfigメソッドは設定暗黙オブジェクトを返します
  • getServletContextメソッドはアプリケーション暗黙オブジェクトを返します
  • getSessionメソッドはセッション暗黙オブジェクトを返します
  • getOutメソッドは暗黙オブジェクトを返します
  • 3.5. pageContextの意味他の 8 つの組み込みオブジェクトをカプセル化します
  • プログラミング プロセス中に、pageContext オブジェクトが通常の Java オブジェクトに渡されると、Java オブジェクトは対話後に 8 つの暗黙的なオブジェクトを取得できます。ブラウザでは、この Java オブジェクトは、他の 8 つの組み込みオブジェクトをカプセル化する pageContext を意味します。それでは、次に何が起こるでしょうか。 pageContext を別の Java クラスに追加するには、どのような状況でこのテクノロジを使用する必要がありますか? より正式な開発では、Java コードを JSP ページに表示することはできません。 Java コードを削除するには、JSP ページ上の Java コードを削除するカスタム タグを開発します。まず、JSP エンジンがカスタム タグを実行するときに、そのカスタム タグの周囲に Java クラスを記述します。タグを定義する Java クラスは、Java クラスを呼び出すときに pageContext オブジェクトをこの Java クラスに渡します。pageContext オブジェクトは他の 8 つの暗黙的なオブジェクトへの参照をカプセル化するため、この Java クラスでは jsp を使用できます。ページ内の暗黙的なオブジェクト (リクエスト、応答、構成、アプリケーション、例外、セッション、ページ、出力)。pageContext オブジェクトは、JSP カスタム タグの開発において特に重要です。

  • 3.6、ドメインオブジェクトとしてのpageContext

pageContextオブジェクトはコンテナとして使用できるため、一部のデータをpageContextオブジェクトに格納できます。

pageContext オブジェクトの一般的に使用されるメソッド

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

findAttribute メソッドに注目してください。このメソッドの API を確認して、このメソッドの説明を確認してください。ページ、リクエスト、セッション (有効な場合)、アプリケーション スコープの名前付き属性を順番に取得し、関連付けられた値または null を返します。

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

以上がjsp 組み込みオブジェクト: pageContext スコープ オブジェクトの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JVMは、さまざまなプラットフォームでガベージコレクションをどのように管理していますか?JVMは、さまざまなプラットフォームでガベージコレクションをどのように管理していますか?Apr 28, 2025 am 12:23 AM

jvmmanagesgarbagecollectionacrossplatformseftivivivivitybyusagenerationalaphadadadaptingtosandhardwaredefferences.itemployscollectorslikeserial、parallel、cms、andg1、各sutitedfordifferentscenarios

なぜJavaコードは変更せずに異なるオペレーティングシステムで実行できるのですか?なぜJavaコードは変更せずに異なるオペレーティングシステムで実行できるのですか?Apr 28, 2025 am 12:14 AM

Javaは、Javaの「Write and Averywherewhere」という哲学がJava Virtual Machine(JVM)によって実装されているため、変更なしで異なるオペレーティングシステムで実行できます。コンパイルされたJavaバイトコードとオペレーティングシステムの間の仲介者として、JVMはバイトコードを特定のマシン命令に変換し、JVMがインストールされた任意のプラットフォームでプログラムが独立して実行できることを確認します。

Javaプログラムをコンパイルして実行するプロセスを説明し、プラットフォームの独立性を強調します。Javaプログラムをコンパイルして実行するプロセスを説明し、プラットフォームの独立性を強調します。Apr 28, 2025 am 12:08 AM

Javaプログラムの編集と実行は、BytecodeとJVMを通じ​​てプラットフォームの独立性を達成します。 1)Javaソースコードを書き、それをbytecodeにコンパイルします。 2)JVMを使用して、任意のプラットフォームでByteCodeを実行して、コードがプラットフォーム間で実行されるようにします。

基礎となるハードウェアアーキテクチャは、Javaのパフォーマンスにどのように影響しますか?基礎となるハードウェアアーキテクチャは、Javaのパフォーマンスにどのように影響しますか?Apr 28, 2025 am 12:05 AM

Javaのパフォーマンスはハードウェアアーキテクチャと密接に関連しており、この関係を理解することでプログラミング機能を大幅に改善できます。 1)JVMは、CPUアーキテクチャの影響を受けるJITコンピレーションを介して、Java Bytecodeを機械命令に変換します。 2)メモリ管理とゴミ収集は、RAMとメモリバスの速度の影響を受けます。 3)キャッシュとブランチ予測Javaコードの実行を最適化します。 4)マルチスレッドと並列処理がマルチコアシステムのパフォーマンスを改善します。

ネイティブライブラリがJavaのプラットフォームの独立性を破ることができる理由を説明してください。ネイティブライブラリがJavaのプラットフォームの独立性を破ることができる理由を説明してください。Apr 28, 2025 am 12:02 AM

ネイティブライブラリを使用すると、これらのライブラリはオペレーティングシステムごとに個別にコンパイルする必要があるため、Javaのプラットフォームの独立性が破壊されます。 1)ネイティブライブラリはJNIを介してJavaと対話し、Javaが直接実装できない機能を提供します。 2)ネイティブライブラリを使用すると、プロジェクトの複雑さが増し、さまざまなプラットフォームのライブラリファイルの管理が必要です。 3)ネイティブライブラリはパフォーマンスを改善できますが、それらは注意して使用し、クロスプラットフォームテストを実施する必要があります。

JVMはオペレーティングシステムAPIの違いをどのように処理しますか?JVMはオペレーティングシステムAPIの違いをどのように処理しますか?Apr 27, 2025 am 12:18 AM

JVMは、JavanativeInterface(JNI)およびJava Standard Libraryを介してオペレーティングシステムのAPIの違いを処理します。1。JNIでは、Javaコードがローカルコードを呼び出し、オペレーティングシステムAPIと直接対話できます。 2. Java Standard Libraryは統一されたAPIを提供します。これは、異なるオペレーティングシステムAPIに内部的にマッピングされ、コードがプラットフォーム間で実行されるようにします。

Java 9で導入されたモジュール性は、プラットフォームの独立性にどのように影響しますか?Java 9で導入されたモジュール性は、プラットフォームの独立性にどのように影響しますか?Apr 27, 2025 am 12:15 AM

modularitydoesnotdirectlyectlyectjava'splatformindepensence.java'splatformendepenceismaindainededainededainededaindainedaindained bythejvm、butmodularityinfluencesApplucationStructure andmanagement、間接的なインパクチャプラット形成依存性.1)

ByteCodeとは何ですか?また、Javaのプラットフォームの独立性とどのように関係していますか?ByteCodeとは何ですか?また、Javaのプラットフォームの独立性とどのように関係していますか?Apr 27, 2025 am 12:06 AM

bytecodeinjavaisthe intermediaterepresentationthateNablesplatformindepence.1)javacodeis compiledintobytecodestoredin.classfiles.2)thejvminterpretsorcompilesthisbytecodeintomachinecodeatime、

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません