ホームページ  >  記事  >  Java  >  jsp 組み込みオブジェクト: pageContext スコープ オブジェクトの使用

jsp 組み込みオブジェクト: pageContext スコープ オブジェクトの使用

php是最好的语言
php是最好的语言オリジナル
2018-08-08 16:10:188109ブラウズ

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 までご連絡ください。