jstljstlを使い始める


備考

JSTL (JSP標準タグライブラリ)は、JSPページのフロー制御する <c:xxx> <fmt:xxx>タグ、 日付/数値書式設定および国際化機能のための<fmt:xxx>タグ、およびいくつかの${fn:xxx()} ユーティリティEL関数

JSTLには、SQLクエリを実行し、JSPページ内でXMLを解析する宣言的な方法を可能にするSQLXMLの taglibもあります。しかしこれはクイックプロトタイピング以外の目的では推奨されません。現実の世界では、 サーブレットによって直接制御/委任されている実際のJavaクラスによって両方のタスクを実行する必要があります。

インストール

JSTLはJava EE APIの一部であり、 WildFlyTomEEGlassFishなどのJava EEアプリケーションサーバーに含まれていますが、 TomcatJettyなどのベアボーンサー​​ブレットコンテナには含まれていません。 JSTLはhttp://java.sun.com/jsp/jstl/* 名前空間からインポートするtaglibです。 JSTLを " カスタムJSPタグライブラリ "( .tld ファイルを自分で定義する)と混同してはいけません。 JSTLは、JSF、Spring MVC、Struts、Displaytagなどのサードパーティのフレームワークのtaglibと混同してはなりません。 JSTLをExpression Language(EL)${} もの)と混同してはいけません。

  1. あなたのServletContainerがJSTLビルトイン(TomcatとJettyなど)に同梱されていない場合にのみ 、webappの/WEB-INF/lib フォルダにjstl-1.2.jarをまっすぐに落としてください(これはデフォルトのwebappのクラスパスに含まれています。あなたは何もする必要はありません)。まずは、IDEプロジェクトのビルドパス設定で慣れないでください。これは間違っています。

    Mavenを使用している場合、 これは座標です:

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
     

    これは、JSTL APIが単一のJARフレーバでApacheのJSTL実装にバンドルされている方法です。これにはstandard.jar 必要ありませ (JSTL 1.1のみ)。 jstl:jstl 依存関係もありますが、まったく同じファイルであり、間違ったグループIDのみを持つことに注意してください。さらに、 javax.servlet.jsp.jstl:jstl 依存関係もありjavax.servlet.jsp.jstl:jstl が、それは空です。

  2. 正しいTLD URIを持つJSPファイル内のtaglibを宣言します。 ここでは、JSTL 1.1とJSTL 1.2の両方に適用されるTLDのドキュメントを見つけることができます。関心のあるtaglibをクリックして、宣言の例を取得します。たとえば、 JSTLコアのtaglib

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     

    JSPではなくFaceletsまたはJSPXを使用している場合は、代わりにXML名前空間として宣言する必要があります

    <anyxmlelement xmlns:c="http://java.sun.com/jsp/jstl/core">
     

衝突を避けるために、クラスパス(JDK / JREの/lib とサーバの/lib )に古いJSTLバージョンの重複がないことを確認する必要があります。サーバーに対する完全な管理者レベルの制御権を持っている場合は、Webアプリケーションの/WEB-INF/lib ではなく、サーバーの/lib にJARファイルを配置して、すべてのデプロイされたWebアプリケーションに適用できるようにすることもできます。少なくとも、その内容とJARファイル(複数可)と乱雑クラスパス(緩いTLDファイル)を抽出しませんおよび/またはあなたの Webアプリケーションの中でタグライブラリを宣言するweb.xml いくつかの貧しいオンラインチュートリアルが示唆するよう。