JSP または Java Server Pages は、Java アプリケーション用の動的な Web ページを作成できる Java テクノロジです。この記事では、JSP とは何かについてさらに詳しく説明し、このテクノロジーの機能のいくつかについて説明し、JSP ページの構造を見て、さらにこれらの Java Server Pages が何であるかを実際に見ていきます。 その前に、JSP の利点と重要性について話しましょう。JSP を使用すると、開発者は次のことが可能になります。
URL パラメーターを含め、JSP の非表示オブジェクトにアクセスする方法を見てみましょう。これを行うには、Tomcat を起動し、ページ http://localhost:8080/ でブラウザを開きます。 次に、サンプル ページに移動します。 次に、リンクに従います。 JSP サンプル: サンプル ページで、リンクに従います。 暗黙的なオブジェクト -> 実行: この上でページでは、非表示オブジェクトの使用例を確認できます。以下は、詳細な説明が記載されたページのスクリーンショットです。 ページ上の対応するフィールドを使用してパラメータの値を変更してみて
- Web ページからデータを Java コードに受け取ります。
- Java コードから Web ページにデータを送信します。
- Java コードを HTML 内に直接記述します (ただし、これを悪用しないでください)。
- JSP は主要な Java Web テクノロジーの 1 つです。
- JSP はほとんどの企業やプロジェクトで広く使用されています。
- JSP は、サーブレット コンテナ内の Java サーブレットとシームレスに統合します。
JSP定義
以下は Wikipedia からの定義です。 JSP (JavaServer Pages) は、 Web 開発者が静的コンポーネントと動的コンポーネントの両方を含むコンテンツを作成できるようにするテクノロジーです。JSP ページには、HTML、SVG、WML、または XML のいずれかのテキスト形式である静的ソース データと、動的コンテンツを構成する JSP 要素という 2 種類のテキストが含まれます。さらに、JSP タグ ライブラリと式言語 (EL) を使用して、JSP ページの静的コンテンツに Java コードを埋め込むことができます。JSP ページ コードは、Jasper JSP ページ コンパイラを使用してサーブレット Java コードに変換され、その後 Java 仮想マシン (JVM) バイトコードにコンパイルされます。JSP ページを実行できるサーブレット コンテナは、プラットフォームに依存しない Java 言語で作成されます。JSP テクノロジは、Web アプリケーションを開発するためのプラットフォームに依存しない、移植性があり、簡単に拡張できるテクノロジです。JSPページの構造
一般に、JSP は、動的部分が Java を使用して生成され、静的部分がマークアップ言語 (ほとんどの場合は HTML) を使用して生成される動的 Web ページを指します。このようなページは、マークアップ言語 (HTML、SVG、WML、XML など) のいずれかで記述され、JSP 要素 (または JSP タグ) が点在する .jsp 拡張子を持つテキスト ドキュメントです。これらのタグにはサーバー コード (データ) への呼び出しが含まれており、いくつかの計算も実行されます。これらのファイルはサーバー上で処理され、その結果、すべての JSP タグが HTML タグに変換され、出力は通常の HTML ページになります。以下の図は、JSP ページの構造とサーバーとの対話を示しています。 単純な JSP ページの例:<html>
<body>
<p> ${2 + 2} равно 4 </p>
</body>
</html>
この例では、特別な言語であるExpression Language (EL) で記述された JSP 式がHTML コード内に「埋め込まれ」ています。これは、プレゼンテーション層 (Web ページ) とアプリケーション ビジネス ロジック層 (Java コード) の間の対話のための重要なメカニズムを提供します。例からわかるように、JSP 式は先頭にドル記号 - を付けて中括弧で囲まれています${...}
。中括弧内にあるものはすべてサーバー上で評価され、この式の結果は、JSP 式が最初に定義された場所の HTML に表示されます。すべてのタグを処理すると、ページは次のようになります。
<html>
<body>
<p> 4 равно 4 </p>
</body>
</html>
サーブレットコンテナのインストールと実行
JSP コードは Java サーブレット コードに変換されるため、JSP がどのように機能するかを説明できるように、どこかにある種のサーブレット コンテナを取得する必要があります。そうしないと、コンテナーがなければ、JSP は機能しません。まず、サーブレット コンテナの定義を見てみましょう。サーブレット コンテナは、サーブレットにシステム サポートを提供し、仕様で定義されたルールに従ってサーブレットのライフ サイクルを保証するサーバーであるプログラムです。本格的な独立した Web サーバーとして機能したり、別の Web サーバーのページプロバイダーになったり、Java EE アプリケーションサーバーに統合したりできます。最も人気のあるサーブレット コンテナーの 1 つは Apache Tomcat です。 Tomcat は本格的な Java EE アプリケーション サーバーではないことに注意してください。ただし、サーブレットと JSP ページの重要なニーズには、Tomcat サーバーで十分です。インストールを開始しましょう。Tomcat は公式ページからダウンロードできます。Windows OS の場合、次のように Tomcat をインストールできます。-
32 ビット/64 ビット Windows サービス インストーラーをダウンロードします。
-
ファイルを実行してみましょう。
-
次に、通常のインストール手順に従います。
-
対応するインストーラー ウィンドウの [サンプル] チェックボックスを忘れずにオンにしてください。
-
プレインストールされた JRE へのパスを指定します。
-
-
インストール後、Tomcat を起動し、ブラウザを開きます。http://localhost:8080/に移動します。
デモアプリケーション。隠されたオブジェクト
実際に動作しているいくつかの JSP 機能を見てみましょう。その 1 つは、いわゆる隠しオブジェクト (暗黙的オブジェクト) へのアクセスです。これらは、式言語 (EL) を使用してアクセスできるオブジェクトです。このようなオブジェクトの例としては、HTTP ヘッダーや URL パラメーターがあります。URL パラメーターとは何なのかを明らかにしてみましょう (または記憶をリフレッシュしてください)。以下の例は、パラメータを含む URL を示しています。パラメータは太字です: http://example.net/foo/bar ?param1=value1¶m2=value2&a=1&name=Tom パラメータは常に疑問符 (?) で始まります。これにパラメータの名前が続き、その後に等号が続きます。パラメータの値が決定されます。複数または 1 つのパラメータを指定できます。複数ある場合、各名前と値のペアはアンパサンド文字 (&) で区切られます。上記の例では、いくつかのパラメーターとその値が定義されています。パラメータ名 | パラメータ値 | |
---|---|---|
パラメータ1 | 値1 | |
パラメータ2 | 値2 | |
ある | 1 | |
名前 | トム |
foo
、アドレス バーのこのパラメータの値も変更されていることに注目してください。表示されたページには多くの機能はありませんが、将来特定の非表示オブジェクトにアクセスする必要があるときに参照できる優れたリファレンスです。このページには、アクセスできる非表示オブジェクトのリストが含まれています。以下の表では、特定のオブジェクトにアクセスする方法を示しています。
JSP関数
ここで、前のページに戻って、「隠しオブジェクト」ページのソース コードを見てみましょう。 これは次のとおりです。<%@page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html>
<head>
<title>JSP 2.0 Expression Language - Implicit Objects</title>
</head>
<body>
<h1>JSP 2.0 Expression Language - Implicit Objects</h1>
<hr>
This example illustrates some of the implicit objects available
in the Expression Language. The following implicit objects are
available (not all illustrated here):
<ul>
<li>pageContext - the PageContext object</li>
<li>pageScope - a Map that maps page-scoped attribute names to
their values</li>
<li>requestScope - a Map that maps request-scoped attribute names
to their values</li>
<li>sessionScope - a Map that maps session-scoped attribute names
to their values</li>
<li>applicationScope - a Map that maps application-scoped attribute
names to their values</li>
<li>param - a Map that maps parameter names to a single String
parameter value</li>
<li>paramValues - a Map that maps parameter names to a String[] of
all values for that parameter</li>
<li>header - a Map that maps header names to a single String
header value</li>
<li>headerValues - a Map that maps header names to a String[] of
all values for that header</li>
<li>initParam - a Map that maps context initialization parameter
names to their String parameter value</li>
<li>cookie - a Map that maps cookie names to a single Cookie object.</li>
</ul>
<blockquote>
<u><b>Change Parameter</b></u>
<form action="implicit-objects.jsp" method="GET">
foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">
<input type="submit">
</form>
<br>
<code>
<table border="1">
<thead>
<td><b>EL Expression</b></td>
<td><b>Result</b></td>
</thead>
<tr>
<td>\${param.foo}</td>
<td>${fn:escapeXml(param["foo"])} </td>
</tr>
<tr>
<td>\${param["foo"]}</td>
<td>${fn:escapeXml(param["foo"])} </td>
</tr>
<tr>
<td>\${header["host"]}</td>
<td>${fn:escapeXml(header["host"])} </td>
</tr>
<tr>
<td>\${header["accept"]}</td>
<td>${fn:escapeXml(header["accept"])} </td>
</tr>
<tr>
<td>\${header["user-agent"]}</td>
<td>${fn:escapeXml(header["user-agent"])} </td>
</tr>
</table>
</code>
</blockquote>
</body>
</html>
HTML に精通している場合は、ページのソース コードが非常に明確に理解できるはずです。次の行に注意してください。
<tr>
<td>${param.foo}</td>
<td>${fn:escapeXml(param["foo"])} </td>
</tr>
ここでは html タグ<tr>
と<td>
. タグの後には<td>
、中括弧で囲まれた JSP タグが続きます${ }
。ただし、URL パラメーターの値がどのように出力されるかに注目してくださいfoo
。
${fn:escapeXml(param["foo"])}
値は、JSP 関数を使用して出力されますfn:escapeXml()
。JSP 関数は、再利用できるいくつかの機能をカプセル化します。この場合は XML エスケープです。JSP テクノロジは、幅広い関数から選択できるほか、独自の関数を作成する機能も提供します。JSP で関数を使用するには、関数が定義されている適切なライブラリを JSP ファイルにインポートする必要があります。
タグライブラリ
上記のソース コードの別の行 (2 行目) を見てみましょう。<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
これがタグライブラリのインポート方法です。構文は直感的です。いくつかのことを定義します。
taglib
(タグライブラリ - タグライブラリ);url
、このライブラリはどこにありますか。fn
このライブラリで定義された関数を呼び出すことができるプレフィックス (この場合は)。
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
と同様fn
、この表記はc
オプションであり、一般的に受け入れられています。この指定は、これらのライブラリが使用されるほぼどこでも見られます。以下はコア ライブラリの関数の例です。
<c:out value = "${'<div>'}"/>
この関数は単にタグを出力します<div>
。この関数はすでに XML エスケープを行っています。${variable}
この関数は、 を介して変数の値を直接出力することで、スクリプト インジェクションへの扉を開く ため、セキュリティの観点から重要です。
JSP編集
さて、新しい知識を身につけて、Tomcat 内のデモ アプリケーションに変更を加えてみましょう。これを行うには、このサーブレット コンテナがインストールされているフォルダー内でこのページのソース コードを見つけます。このファイルは次のアドレスにあります: ...\Apache Software Foundation\Tomcat 9.0\webapps\examples\jsp\jsp2\el 次に、任意のテキスト エディタでファイル implicit-objects.jsp を開きます コア ライブラリのインポートを追加しますテキストを出力してみましょう: 次に 、非表示オブジェクトのページを更新して、加えられた変更を確認してみましょう:結果
そこで、JSP などのテクノロジを表面的に検討しました。私たちは次のことについて話し合いました。- JSPとは何ですか?
- JSP ページ構造。
- Tomcat サーブレット コンテナをインストールして実行する手順。
- 非表示オブジェクトにアクセスするためのデモ アプリケーション。Tomcat サーバー配布パッケージに含まれています。
- JSP 関数とタグ ライブラリ。
次は何ですか?
マテリアルを保護するには、次のことができます。- この記事で説明したことをすべて繰り返します。
- Tomcat サーバーに含まれる他のデモ アプリケーションを検討してください。
- 独自のアプリケーションを作成し、それをサーブレット コンテナーにデプロイします。ガイドとして、「IntelliJ Idea Enterprise での単純な Web プロジェクトの作成」の記事を使用できます。写真付きでステップバイステップで説明します。
GO TO FULL VERSION