私は長い間、JSP と ASP を使用してプログラミングを行ってきましたが、これら 2 つのサーバー側プログラミング ソリューションの中で、JSP の方が ASP よりもはるかに強力であると感じています。サーバーサイド Web アプリケーション開発ツールとして JSP を選択する必要があるのはなぜですか?もちろん、JSP には多くの魅力的な機能がありますが、JSP のタグ ライブラリは、私がこの決断を下した最も重要な理由の 1 つでした。
なぜこんなことを言うのですか?その理由は 2 つあります。メンテナンスと開発のスピードです。サーバーサイドスクリプト言語は、実際にはインターネット開発のるつぼです。サーバー ページでは、さまざまなスクリプト メソッドとオブジェクトを簡単に組み合わせることができます。この種のページは、Web を構築するための具体的なものにすぎません。この「要素」の組み合わせによって、サーバーサイド スクリプトに強力な情報処理機能が与えられます。これにより、サーバー側プログラマは動的で柔軟な Web ページを開発できます。しかしその一方で、スクリプトの自由な混合には欠点もあります。それは、特にプロジェクトの規模が成長し続けると、メンテナンスが非常に面倒になるということです。さらに悪いことに、コードが複雑になると開発速度が低下するため、中規模および大規模の Web アプリケーションの開発には適しません。多くの中規模または大規模なサーバーサイド Web アプリケーションです。開始が非常に遅く、コストが制御不能です。さらに、サイトを開発した後も、これらのかなり複雑なコードを保守する資格のあるプログラマーを見つける必要があります。その結果、これらのプログラマーは一般的な Web デザイナーとなり、サーバー側アプリケーションが最終的なグラフィック デザインと実装の両方で重要な役割を果たします。 . 弱くなっています。
この問題を解決するために、ASP は COM オブジェクト技術を導入し、JSP はその対策として J2EE を提供しました。これらのソリューションは、一元化された再利用可能なコード ベースのメカニズムに基づいて構築されています。ただし、使い方が難しすぎて習得するのに時間がかかります。さらに、これらのソリューションは、乱雑なコードを作成する誘惑を軽減するものではないため、結果として、これらのテクノロジを使用するには、大規模でよく構造化された開発チームを編成する必要があります。中規模のプロジェクトでは、このような方法は通常あまり使用されませんが、実際には中規模の Web アプリケーション プロジェクトが最も一般的です。その結果、多くのプロジェクトは、ニーズを満たさない開発および保守環境の使用を余儀なくされています。
幸いなことに、JSP はこの問題を解決するためのより良い方法を提供します。タグ ライブラリは、再利用可能なコード ブロックを作成する簡単な方法を提供します。タグ ライブラリを設計すると、多くのプロジェクトで再度使用できます。さらに便利なのは、COM や J2EE とは異なり、JSP の書き方を知っていれば、タグ ライブラリを作成するために他のスキルを学ぶ必要がないことです。最後に、タグ ライブラリにより、Web アプリケーションの保守性も向上します。この保守性の向上は、JSP ページでの XML ベースのカスタマイズ可能なインターフェイスの簡単な実装に反映されています。その結果、Web デザイナーは、JSP が何であるかを知らなくても JSP Web アプリケーションを構築できます。このようにして、Web 開発は非常に効率的なチーム開発タスクになります。 JSP プログラマはカスタム タグとバックエンド コード モジュールを作成でき、Web デザイナーはカスタム タグを使用して Web デザイン自体に完全に集中できます。タグ ライブラリは、コードの混乱の問題を解決し、すっきりと美しく実行します (実際、XML はこれらの問題を解決する本質ですが、それでもタグ ライブラリが重要な役割を果たします)。
タグライブラリとは何ですか?
JSP タグ ライブラリ (カスタム タグ ライブラリとも呼ばれます) は、JavaBeans を通じて XML ベースのスクリプトを生成する方法と見なされます。概念的には、タグはシンプルで再利用可能なコード構造です。たとえば、JSPKit の最新リリース (JSP Insider 内) では、XML タグを使用して XML ドキュメントに簡単にアクセスできます。以下のリストAを参照してください。
リスト A: XML/XSL 変換を実行するタグの例と、それに含まれる HTML ページ
<%@ taglib uri=" http://www.jspinsider.com/jspkit/JAXP " prefix="JAXP"%>
上記の例では、単純なタグを使用して、バックグラウンドでより強力なコードにアクセスします。ステートメントのタグ部分は、まず XML ファイルをロードし、次に XSL ファイルを適用して XML ファイルの内容を特定の形式に変換します。表現形式を変更してクライアントに送信する場合、これはすべて非常に単純なタグを使用するだけです。カスタム タグを使用すると、JSP プロジェクトで再利用可能なオープン ソース モジュールを簡単に作成できます。必要なのはタグ ライブラリとそのドキュメントだけです。
タグ ライブラリの重要な機能
1. 複数のプロジェクトへのインストールが簡単 タグは、1 つの JSP プロジェクトから他のプロジェクトに簡単に移行できます。タグ ライブラリを作成したら、すべてを JAR ファイルにパッケージ化するだけで、JSP プロジェクトで再利用できます。タグ ライブラリは、タグを再利用でき、独自のプロジェクトで簡単に使用できるため、ますます人気が高まっています。現在、最適なタグ リソースは JSPTags.com で見つけることができます。
2. 拡張 JSP タグ ライブラリには、JSP 仕様 (JSP 1.2) の任意の機能を含めることができ、JSP の次のバージョンの登場を待たずに、JSP の機能を無制限に拡張および追加できます。たとえば、JSP インクルード呼び出しに満足できないとします。独自の仕様を強制する独自の include タグを作成できます。
3. 保守が容易
タグ ライブラリを使用すると、次の理由から JSP Web アプリケーションの保守が非常に簡単になります。
(1) ラベル貼付はシンプルで誰でも簡単に使用でき、分かりやすいです。
(2) すべてのプログラム ロジック コードはタグ プロセッサと JavaBeans に集中しています。つまり、コードをアップグレードするときに、そのコードを使用するすべてのページを変更する必要はなく、集中コード ファイルのみを変更する必要があります。
(3) 新しい機能を追加する必要がある場合、既存のページを変更する必要はありません。タグに追加の属性を追加して新しい動作を導入できますが、他の古い属性は変更されないため、すべての古いページを引き続き使用できます。正常に動作します。 たとえば、すべてのテキストを青にするラベルがあるとします。
しかし、プロジェクトの後半では、青をより暗くする必要があります。以下に示すように、元のラベルを保持し、それに新しい属性 Shade を追加するだけです。
すべての古いタグは引き続き青色のテキストを生成できますが、同じタグを使用して濃い青色のテキストを生成できるようになりました。
(4) ラベルによりコードの再利用性が向上します。何度もテストされ、使用されたコードは間違いなくバグが少なくなります。したがって、カスタム タグを使用する JSP ページは欠陥も少なく、当然ながら保守がはるかに便利です。
4.開発時間を短縮できるタグ ライブラリにより、コードを簡単に再利用できます。サーバーサイド言語でコードを再利用する標準的な方法の 1 つは、テンプレートを使用することです。テンプレート ライブラリを使用する場合と比較して、タグ ライブラリはより良いソリューションです。テンプレート ライブラリを使用する場合、プロジェクトごとにテンプレートを変更するか厳密なインターフェイスを構築する必要がありますが、タグ ライブラリにはこれらの制限がなく、オブジェクト指向のすべての利点があり、柔軟性と拡張性が高く、再利用することでコードを作成すると、開発に費やす時間が減り、Web アプリケーションの設計に多くの時間を費やすことができます。タグ ライブラリのインターフェイスも非常にシンプルなので、挿入、使用、デバッグが非常に簡単です。
タグの構造
タグ ライブラリは非常に使いやすいですが、タグ ライブラリを確立する内部実装メカニズムは依然として非常に複雑で、少なくとも単純な JavaBean を確立するよりも複雑です。この複雑さは、タグ ライブラリが複数の部分で構成されているという事実に起因します。ただし、習得する必要があるのは Java と JSP の知識だけです。
単純なタグは次の要素で構成されます。
1. JavaBean: Java とその固有のオブジェクト指向の性質を活用するには、再利用可能なコードを JavaBean である別のコード コンテナーに配置する必要があります。これらの JavaBeans はタグ ライブラリの必須の部分ではありませんが、割り当てられたタスクを実行するためにタグ ライブラリによって使用される基本的なコード モジュールです。
2.タグ プロセッサ: タグ プロセッサは、タグ ライブラリの真の心臓部です。タグ ハンドラーは、必要な外部リソース (JavaBeans) を参照し、JSP ページ情報 (PageContext オブジェクト) へのアクセスを担当します。 JSP ページは、ページに設定されたタグ属性とタグ本体のコンテンツをタグ プロセッサに渡し、処理が完了すると、処理された出力結果が JSP ページに返送されます。
3.タグ ライブラリ記述子 (TLD ファイル): これは、タグ プロセッサの属性、情報、および場所を記録する単純な XML ファイルです。 JSP コンテナはこのファイルを使用して、タグ ライブラリを呼び出す場所と方法を認識します。
4. Web サイトの web.xml ファイル: これは Web サイトの初期化ファイルであり、Web サイトで使用されるカスタム タグと、各カスタム タグを記述するために使用される tld ファイルを定義する必要があります。
5.リリース ファイル (WAR または JAR ファイル): カスタム タグを再利用したい場合は、それらをあるプロジェクトから別のプロジェクトに移動する方法が必要です。タグ ライブラリを JAR ファイルにパッケージ化するのは、簡単で効果的な方法です。
6. JSP ページでのタグ ライブラリ宣言: JSP ページでカスタム タグを使用する場合は、タグ ライブラリ識別子を使用してページ上で宣言する必要があります。
やるべきことがたくさんあるようで、もちろん初めて使い始めるときは少し難しいかもしれませんが、それほど難しいことではありません。重要なのはコーディングではなく、断片を正しく整理することです。この階層構造は、タグの使用を柔軟にして転送しやすくするため、重要です。さらに重要なのは、これらのレベルでは、タグ ライブラリを作成するプロセス全体を JSP IDE (JSP 統合開発環境) を通じて自動化できることです。 JSP IDE はカスタム タグの作成作業のほとんどを自動的に完了できるため、ユーザーはコードとタグ プロセッサを自分で設定することのみを担当する必要があります。
(注: タグ プロセッサは 1 つのカスタム タグのみを定義します。タグ ライブラリは、同じタスクを処理する複数のタグ プロセッサのコレクションです)
最初のタグを作成する
以下では、カスタム タグの作成方法と具体的な例を段階的に説明します。は、独自の HTML エンコード関数を備えているように JSP を拡張しています。この機能は、すべての < および > 文字を HTML コードに置き換えます。他のエンコード処理を実行するために簡単に拡張できます。わかりやすくするために、この例ではカスタム タグ作成の基本要素のみを説明します。
JavaBean を作成する
コードの再利用可能な部分はすべて
JavaBean に配置する必要があります。これは非常に重要です。こうすることで、他のプロジェクトでコードを再利用できます。タグ ハンドラー内に配置されたコードはタグの外では再利用できないため、再利用可能なコード部分を分離することが重要です。この例では、HTML 用にコード化されたロジックは共通であるため、JavaBean に配置されています。リスト B を参照してください。
リスト B: HTML エンコードされた JavaBeans
/* HTML_Format.java */
public class HTML_Format extends Objectimplements java.io.Serializable {
/** 新しい HTML_Format を作成します */
public HTML_Format() {}
/** 文字列内のすべての < および > 文字を応答の HTML エンコーディングに置き換えます */
public String HTML_Encode(String as_data)
{
int li_len = as_data.length();
/*文字列バッファの長さが元の文字列より長い*/
StringBuffer lsb_encode = new StringBuffer(li_len + (li_len/10))
/* すべての < および > 文字を置換するループ*/
for(int li_count = 0; li_count < li_len; li_count++)
{ String ls_next = String.valueOf(as_data.charAt(li_count));
if (ls_next.equals("<")) ls_next = "<";
if (ls_next.equals(">")) ls_next = ">";
lsb_encode.append( ls_next );
return( lsb_encode.toString() )
;
}
}
タグ プロセッサを作成するコードをリスト C に示します。
リスト C: HTML エンコードタグプロセッサ
インポート java.io.IOException;
javax.servlet.jsp.* をインポートします。
import javax.servlet.jsp.tagext.*;
public class HTML_FormatTag extends BodyTagSupport
{
/* 1) この関数はタグの最後で呼び出されます*/
public int doEndTag() は JspTagException をスローします
{
試す
{ /* 2) ラベル内のテキストを取得します */
ボディコンテンツ l_tagbody = getBodyContent();
String ls_output = ""
/* 3) タグ本体にテキストがある場合、それを処理します */
if(l_tagbody != null)
{ HTML_Format l_format = 新しい HTML_Format();
/* 3a) タグ本体の内容を文字列に変換します */
文字列 ls_html_text = l_tagbody.getString();
ls_output = l_format.HTML_Encode(ls_html_text);
}
/* 4) 結果をデータ ストリームに書き戻す */
pageContext.getOut().write(ls_output.trim());
}
catch (IOException e)
{ throw new JspTagException("タグ エラー:" + e.toString());
}
/* JSP に次のページのコンテンツの処理を継続させます*/
EVAL_PAGEを返します;
}
この処理は非常に単純で、次のものが含まれます
。
1.開始タグと終了タグの間のテキストを読みます
2. HTMLエンコード関数を呼び出す
3.結果を JSP ページに返します。
タグ記述子の作成
カスタム タグを記述して、システムがそれをどう扱うかを認識できるようにする必要があります。この記述ファイルの接尾辞は .tld です。TLD ファイルは通常、タグ プロセッサにちなんで名付けられ、「/WEB-INF/」ディレクトリに保存されます。リスト D を参照してください。
リスト D: HTML エンコードタグ記述子
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP タグ ライブラリ 1.1//EN"
「 http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd 」>
<タグリブ>
<TLIBVERSION>1.0</TLIBVERSION>
<JSPVERSION>1.1</JSPVERSION>
<SHORTNAME>HTML_FormatTag</SHORTNAME>
<URI></URI>
<INFO>HTMLエンコーディングタグ</INFO>
<TAG>
<NAME>HTMLエンコード</NAME>
<TAGCLASS>HTML_FormatTag</TAGCLASS>
<INFO>HTMLをエンコード</INFO>
</TAG>
</TAGLIB>
Web XML ファイルを更新して
、JSP コンテナにタグ ライブラリの使用方法を指示します。これを行うには、web.xml ファイルを変更する必要があります。具体的には、taglib プロジェクトを追加してタグ ライブラリを登録し、タグに URI を割り当てる必要があります。 URI は、この特定のタグに適用される Web サイト上の唯一のインデックスです。タグは将来別の Web サイトで使用される可能性があるため、一意性を確保するために完全な URL やパッケージ名を使用することが最善です。この例は簡略化されています。サンプル コードについてはリスト E を参照してください。
リスト E: web.xml ファイルを変更する
PUBLIC "-//Sun Microsystems, Inc.//DTD Web アプリケーション 2.2//EN"
「 http://java.sun.com/j2ee/dtds/web-app_2.2.dtd 」>
<WEB-APP>
<TAGLIB>
<タグリブウリ>
HTMLエンコード
</タグリブウリ>
<タグリブの場所>
/WEB-INF/HTML_FormatTag.tld
</タグリブ-場所>
</TAGLIB>
</WEB-APP>
新しいタグを使用する
カスタマイズしたタグを設定したら、JSP ページで使用できるようになります。これを行うには、taglib ディレクティブ コマンドを使用して、ページで使用するタグを宣言するだけです。タグはその一意の URI によってインデックス付けされ、名前空間プレフィックスが割り当てられます。このプレフィックスには特別な意味はなく、他の名前空間と競合しない限り、任意のものにすることができます。以下のリスト F および G を参照してください。
リスト F:JSP ページでの
HTML エンコード タグ<%@ taglib uri="HTMLEncode" prefix="Examples" %>
の使用
<プレ>
<?XML:NAMESPACE PREFIX = 例 /><例:HTMLEncode>
<こんにちは、簡単サンプル>
</例:HTMLEncode>
</PRE>
リストG:サンプルコードの出力<こんにちは、簡単なサンプル>
これは次のように表示されます。
<Hello, Simpleサンプル>
このタグを使ってページのコードを全てエンコードしてみました。すべてのカスタム タグはサーバー上で処理されます。これは、出力ページにカスタム タグが表示されないことを意味します。
ご覧のとおり、タグの作成は難しくありません。最も面倒な部分は、タグ プロセッサの詳細を学習することです。これは強力な機能ですが、まだ表面をなぞっただけです。このプロセスには多くの手順が含まれるため、新しい JSP プログラマはタグを作成するときに混乱を感じるかもしれません。
結論
タグ ライブラリは JSP の最も重要な機能の 1 つであり、現在も継続的に開発中です。確かに新しいものなので、まだ広く採用されていませんが、カスタムタグライブラリによってその謎が取り除かれ、ますます多くの開発者が注目し、使用し始めています。 2001 年後半には、タグ ライブラリが多くの JSP プロジェクトで非常に一般的な機能になることが予想されます。
タグ ライブラリの利点については、この記事では簡単に説明するだけです。タグ ライブラリには、実際には他にも多くの強力な機能があります。タグ ライブラリは、JSP 開発を前例のない新しい世界に押し上げます。これは、JSP 開発者にとって、JSP をさまざまなアプリケーションに変換し、あらゆるタイプの Web アプリケーションを構築できるツールを手に入れることができるため、確かにエキサイティングな新しいテクノロジです。タグ ライブラリは、JSP を最も豊富で動的な開発機能と強力な Web プログラミング環境に変えます。その機能は私たちの想像力と創造力によってのみ制限されます。