JSPの暗黙的オブジェクト
JSP暗黙的オブジェクトとは何ですか?
- JSP 暗黙オブジェクトは、JSP からサーブレットへの変換フェーズ中に作成されます。
- これらのオブジェクトは、サービス メソッドに含まれるスクリプトレットで直接使用できます。
- これらはコンテナによって自動的に作成され、オブジェクトを使用してアクセスできます。
JSP で使用できる暗黙的オブジェクトはいくつありますか?
コンテナーで使用できる暗黙的オブジェクトは 9 種類あります。
- でる
- リクエスト
- Response
- 設定
- 申し込み
- セッションを開く
- ページコンテキスト
- ページへ移動します。
- 例外
一つ一つ勉強していきましょう
1) アウト
- Outは、データをバッファに書き込み、それに応じてクライアントに出力を送信するための暗黙的なオブジェクトの1つです。
- Out オブジェクトを使用すると、サーブレットの出力ストリームにアクセスできます。
- Out は javax.servlet.jsp.jspWriter クラスのオブジェクトです
- 作業中 サーブレット、printwriter オブジェクトが必要です
例:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP1</title> </head> <body> <% int num1=10;int num2=20; out.println("num1 is " +num1); out.println("num2 is "+num2); %> </body> </html>
コードの説明:
コード行 11-12– out は出力ストリームに出力するために使用されます
上記のコードを実行すると、次の出力が得られます。
出力:
- 出力では、num1 と num2 の値を取得します。
2) リクエスト
- リクエストオブジェクトはjava.servlet.http.HttpServletRequestのインスタンスであり、サービスメソッドの引数のXNUMXつです。
- リクエストごとにコンテナごとに作成されます。
- パラメータ、ヘッダー情報、サーバー名などの情報をリクエストするために使用されます。
- getParameter() を使用してリクエストパラメータにアクセスします。
例:
Implicit_jsp2.jsp(guru.jspにリクエストを送信するフォーム)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru form JSP2</title> </head> <body> <form action="guru.jsp"> <input type="text" name="username"> <input type="submit" value="submit"> </form> </body> </html>
Guru.jsp (アクションが実行される場所)
コードの説明:
コード行 10 ~ 13 : implicit_jsp2.jsp(form) リクエストが送信されるため、変数のユーザー名が処理され、JSP のアクションである guru.jsp に送信されます。
Guru.jsp
コード行 10-11: リクエストが処理されるのはアクション jsp であり、ユーザー名はフォーム jsp から取得されます。
上記のコードを実行すると、次の出力が得られます。
出力:
テストを記述して送信ボタンをクリックすると、次の出力「Welcome Test」が表示されます。
3)応答
- 「Response」は、HttpServletResponseインターフェースを実装したクラスのインスタンスです。
- コンテナはこのオブジェクトを生成し、パラメータとして _jspservice() メソッドに渡します。
- 「レスポンスオブジェクト」はリクエストごとにコンテナによって作成されます。
- クライアントに与えることができる応答を表します
- 応答の暗黙的オブジェクトは、コンテンツ タイプ、Cookie の追加、応答ページへのリダイレクトに使用されます。
例:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP4</title> </head> <body> <%response.setContentType("text/html"); %> </body> </html>
コードの説明:
コード行 11: 応答オブジェクトでは、コンテンツ タイプを設定できます。
ここでは、応答オブジェクトのコンテンツ タイプのみを設定します。 したがって、これに対する出力はありません。
4) 設定
- 「Config」のタイプは java.servlet.servletConfig です。
- 各JSPページのコンテナによって作成されます
- web.xml の初期化パラメータを取得するために使用されます。
例:
Web.xml (サーブレットの名前とマッピングを指定します)
Implicit_jsp5.jsp (サーブレット名の値の取得)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP5</title> </head> <body> <% String servletName = config.getServletName(); out.println("Servlet Name is " +servletName);%> </body> </html>
コードの説明:
web.xml内
コード行 14 ~ 17: web.xml には、サーブレットとクラスのマッピングがあります。
Implicit_jsp5.jsp
コード行 10 ~ 11: JSP でサーブレットの名前を取得するには、config.getServletName を使用します。これは、サーブレットの名前を取得するのに役立ちます。
上記のコードを実行すると、次の出力が得られます。
出力:
- サーブレット名は、web.xml に存在する名前と同じ「GuruServlet」です。
5)アプリケーション
- アプリケーション オブジェクト (コード行 10) は javax.servlet.ServletContext のインスタンスであり、JSP のコンテキスト情報と属性を取得するために使用されます。
- アプリケーションがデプロイされると、コンテナによってアプリケーションごとに 1 つのアプリケーション オブジェクトが作成されます。
- Servletcontext オブジェクトには、サーブレット コンテナと対話するために使用される一連のメソッドが含まれています。サーブレット コンテナに関する情報を見つけることができます。
例:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Implicit JSP6</title> </head> <body> <% application.getContextPath(); %> </body> </html>
コードの説明:
- 上記のコードでは、application 属性は JSP ページのコンテキスト パスの取得に役立ちます。
6) セッション
- セッションは「httpsession」オブジェクトを保持しています(コード行 10)。
- セッション オブジェクトは、セッション スコープの属性を取得、設定、削除するために使用され、セッション情報を取得するためにも使用されます。
例:
Implicit_jsp7(属性が設定されている)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit JSP</title> </head> <body> <% session.setAttribute("user","GuruJSP"); %> <a href="implicit_jsp8.jsp">Click here to get user name</a> </body> </html>
Implicit_jsp8.jsp (属性の取得)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>implicit Guru JSP8</title> </head> <body> <% String name = (String)session.getAttribute("user"); out.println("User Name is " +name); %> </body> </html>
コードの説明:
Implicit_jsp7.jsp
コード行 11: セッション変数に属性 user を設定しており、その値は、どの JSP (_jsp8.jsp) から呼び出されてもセッションからフェッチできます。
コード行 12: href で別の JSP を呼び出し、設定されている属性 user の値を取得します。
Implicit_jsp8.jsp
コード行 11: セッションオブジェクトからユーザー属性の値を取得し、その値を表示しています。
上記のコードを実行すると、次の出力が得られます。
ユーザー名のリンクをクリックすると、次の出力が表示されます。
出力:
- implicit_jsp7.jsp にあるリンクをクリックすると、8 番目の JSP ページ、つまり (_jsp7.jsp) ページにリダイレクトされ、ユーザー属性 (_jspXNUMX.jsp) のセッション オブジェクトから値を取得します。
7) ページコンテキスト
- このオブジェクトは pagecontext のタイプです。
- 特定のスコープから属性を取得、設定、削除するために使用されます。
スコープには 4 つのタイプがあります。
- ページへ移動します。
- リクエスト
- セッションを開く
- 申し込み
例:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP9</title> </head> <body> <% pageContext.setAttribute("student","gurustudent",pageContext.PAGE_SCOPE); String name = (String)pageContext.getAttribute("student"); out.println("student name is " +name); %> </body> </html>
コードの説明:
コード行 11: pageContext オブジェクトを使用して属性を設定しており、それには XNUMX つのパラメータがあります。
- キー
- 値
- 対象領域
上記のコードでは、キーはstudent、値は「gurustudent」ですが、スコープはページスコープです。 ここではスコープは「ページ」であり、ページスコープのみを使用して取得できます。
コード行 12: pageContextを使用して属性の値を取得しています
上記のコードを実行すると、次の出力が得られます。
出力:
- 出力には「学生名は gurustudent」と表示されます。
8) ページ
- ページ暗黙変数は、対応する JSP に対して現在実行されているサーブレット オブジェクトを保持します。
- 現在の JSP ページのこのオブジェクトとして機能します。
例:
この例では、ページ オブジェクトを使用して、toString メソッドを使用してページ名を取得しています。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP10</title> </head> <body> <% String pageName = page.toString(); out.println("Page Name is " +pageName);%> </body> </html>
コードの説明:
コード行 10 ~ 11: この例では、ページ オブジェクトのメソッド toString() を使用して、JSP ページの文字列名を取得しようとしています。
コードを実行すると、次の出力が得られます。
出力:
- 出力は上記のJSPページの文字列名です
9) 例外
- 例外は、スロー可能クラスの暗黙的なオブジェクトです。
- に使用されます JSPでの例外処理.
- 例外オブジェクトはエラー ページでのみ使用できます。例:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" isErrorPage="true"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP 11</title> </head> <body> <%int[] num1={1,2,3,4}; out.println(num1[5]);%> <%= exception %> </body> </html>
コードの説明:
コード行 10-12 – 数値の配列、つまり 1 つの要素を持つ num1 があります。出力では、配列リストで宣言されていない numXNUMX から配列の XNUMX 番目の要素を出力しようとしています。そのため、これは jsp の例外オブジェクトを取得するために使用されます。
出力:
1 番目の要素の numXNUMX 配列を取得している配列で ArrayIndexOfBoundsException が発生しています。