JSP にはどのような組み込みオブジェクトがありますか?この記事では、pageContext オブジェクトの詳細を含め、JSP の 9 つの組み込みオブジェクトについて説明します。このオブジェクトは、JSP ページの実行環境を表します。カプセル化するだけではありません。他の 8 つの暗黙的オブジェクトへの参照に加えて、データを保存するために使用できるドメイン オブジェクト (コンテナー) 自体でもあります。他のオブジェクトも pageContext を通じて取得できます。具体的な使用法については以下で説明します。
各 JSP ページに初めてアクセスすると、WEB コンテナはリクエストを JSP エンジン (つまり Java プログラム) に渡して処理します。 JSP エンジンは、まず JSP を _jspServlet (本質的にはサーブレット) に変換し、次にサーブレット呼び出しメソッドに従ってそれを呼び出します。
初めてアクセスするときに JSP はサーブレットに変換されるため、最初のアクセスは通常遅くなりますが、2 回目のアクセスでは、JSP エンジンが JSP が変更されていないと判断すると、変換されなくなります。ただし、直接呼び出すため、プログラムの実行効率には影響しません。
JSP エンジンは、JSP に対応する _jspServlet を呼び出すと、_jspServlet が使用する Web 開発に関連する 9 つのオブジェクトを渡すか、作成します。開発者が JSP ページを作成するときにこれらの Web オブジェクトへの参照を取得しやすくするために、JSP テクノロジの設計者は、これらの変数を通じて JSP ページ内のこれらの 9 つのオブジェクトへの参照を迅速に取得できる 9 つの対応する変数を特別に定義しました。
NO. | 組み込みオブジェクト | type |
1 | pageContext | javax.servlet .jsp.PageContext | HttpServletRequest ttpServletResponse
4 | セッションjavax.servlet.http.HttpSession | |
5 | アプリケーションjavax.servlet.ServletContext | |
6 | configjavax.servlet.ServletConfig | |
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 サーブレット エンジンによって提供されるバッファ内:
3.4. pageContext を通じて他のオブジェクトを取得する getException メソッドは例外暗黙的オブジェクトを返す
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方法。 范例:使用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 組み込みオブジェクト: pageContext スコープ オブジェクトの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。