JSTL Xタグを表示する流れ

ブラウザのformから送信したXML文字列を、JSP側で受け取って、JSTLのXタグに渡しているかを
説明します。前回ご提供したソースコードは、以下のようなフォルダ構成になっています。

その中に、各種ソースは以下のように配置されています。
以下、ソースコードの表の No で呼びます。

No フォルダ名 JSP名
1 src/main/webapp index.jsp
2 src/main/webapp/jsp include.jsp
3 src/main/webapp/jsp/jstl simple.jsp
4 src/main/webapp/jsp/xslt simple.jsp
5 src/main/webapp/jsp/xslt/xsl simple.xsl

ちなみに今回のソースは、説明を単純にするために、servlet(つまり、.java のソースファイル )は
一切使わないで説明を続けていきます。そのおかげで、web.xml には全く変更を入れていませんし、
「SprigWebアプリ」で説明したような XMLの設定ファイルもありません。
ただし、下記のような妥協がありますので、ご注意ください。

  • セキュリティが甘い( jspは、本来は src/main/webapp/WEB-INF/jsp 以下に配置すべき )
  • メッセージが jsp 内に直接埋め込まれている( メッセージリソースを使うべき.. )

JSTL X タグを呼び出す

まず最初に、ソースNo.1 の index.jspです。このJSPは、http://localhost:8080/JSP-XML/ を
表示した時に、Tomcat が自動的に表示してくれます。
中身のポイントは、下記の form 部分で、「JSTL」というボタンを押すと、
onClick="document.xmlForm.action=''" が走ってから、 xmlForm が submit されます。

この onClickでは、xmlFormのtarget(URL)を、JSTLのc:urlタグを使って、設定しています。
c:urlタグを使わなければ、onClick="document.xmlForm.action='/JSP-XML/jstl/simple/jsp'"
なのですが、c:urlタグを使うと、自動的に /JSP-XML を先頭につけてくれます。
作った JSP-XML.war をリネームして、JSP-XML2.war として、$TOMCAT/webapps に配置すると、
自動的に、付与される文字列が /JSP-XML2 になるので、便利だと思います。

さて、JSTLボタンを押すと、次の処理は、No.3 の simple.jspに移ります。
下のソースが、simple.jspの全ソースコードです。
話は単純で、$domXML という DOMオブジェクトの /test/body を表示するという内容になります。
って、どこで $domXML なんて設定したの??? 実は、includeしている /jsp/include.jspなんです。

No.2 include.jsp の説明です。
早速ソースコードを見ていただきましょう。

include.jspでは、No.1 の index.jsp から送信されてきたformデータである、
inputXML( textareaの内容 )を request.getParameter( "inputXML" ); で受信して、
ちょいと、文字化け対策を施したのち、request.setAttribute("gotXML", inputXML );で、
リクエストスコープの変数に設定しています。

最後に、JSTL:X タグの登場です。
で、gotXML をパースして、DOMオブジェクト domXMLを
構築します。ちなみに domXMLは、JSPのページスコープ変数になります。

あと、include.jspでは、JSTLのCタグと、Xタグを使う宣言をしています。

終了

いかがでしたでしょうか。これで JSTL:Xタグをつかって、JSPだけで、XMLを加工して
表示する準備ができました。次からは、繰り返し処理や、普通のXSLファイルでできないような
集計処理などを順次、紹介していきます。