JavaのWebアプリケーション開発フレームワークによる、Webサイト開発の顛末記です。

EclipseのMavenを使った、Spring-MVC、Thymeleaf、MyBatis 等のプログラミングテクニックを、
備忘録的に記録しています。実際に動くソースコードを多用して説明していますので、
これからEclipseや、Spring-MVCを始めたいと思っている人にとって、少しでも参考になれば幸いです。
■SpringMVC の小径 第6歩 Spring-MVC 大きな一歩
6-1)パラメータレスポンス
桜の宴もたけなわとなってきました。
花見に酔うのもいいですが、まだまだ先は長いのでここらでしっかりと腹ごしらえしておきましょう。
前節のサンプルはちと物足りない前菜だったので、
今度は、view(HTML)とコントローラ(サーブレット)との間で
動的にパラメータを受け渡すサンプルを作ってみます。
パラメータの受け渡しと言っても、viewからサーブレットへのインプット(request)と
サーブレットからviewへのアウトプット(response)の方向性があり、
両方をいっぺんに、ごちゃっと説明すると頭が混乱してしまうので、
まずは、簡単なパラメータのレスポンスから始めてみます。

初めの一歩で使った、Hello.javaを少し改造してみます。
それに対応して、hello.htmlも改造します。
src/main/java/jp/dip/arimodoki/cntl/Hello.java(修正)

先ほどのHello.javaに少し付け加えました。
④Model パラメータの追加
  メソッドhello_view()の引数に Model moel が追加されています。
  Modelクラスは、Spring-MVCが標準で実装しているデータモデルクラスです。

⑤Modelの属性に変数を追加
  modelの属性に、mynameという変数を"すぷりんぐ太郎"という値でセットします。
  このデータモデルは、DispatcherServletを介して、自動的にviewに返却(レスポンス)されます。
WebContent/hello.html(修正)

先ほどのhello.htmlを少し追加修正しました。
①Thymeleafの魔法の呪文
  また知らない言葉が出てきました。
  Thymeleafの使い方については、「■Thymeleafの小径」を見てください。

  このHTMLをThymeleafで動かせるようにするための呪文です。
  この呪文(開けゴマ!)を唱えないと、Thymeleafはthタグを解釈できません。

②レスポンスパラメータの取り出し
  サーブレットから返却された「myname」というパラメータを
  Thymeleafのタグ、th:text=${myname}で取り出します。

 

では、これを実行してみましょう。
先ほどと同じく、Eclise「サーバービュー」でローカルサーバーを起動し、
ブラウザのURLに「http://localhost:8080/j_Labo/hello.xhtml」を入力します。
おいらはすぷりんぐ太郎だじょ
どうでしょう。元のHTMLの内容は、「サンプル花子」でしたが、Thymeleafの魔法によって
サーブレットから返却されたパラメータmynameの値「すぷりんぐ太郎」で内容が置き換えられました。

ちょっと閃いたことがあります。
元のHTML(hello.html)は、コンテキストパス配下に設置してあるので、ダイレクトに指定したらどうなるでしょう?
やってみましょう。
ブラウザのURLに今度は「http://localhost:8080/j_Labo/hello.html」と入力します。
xhtml ではなく、html であることに注意してください。
私は花子だってば!
元の素のままのHTMLの内容が表示されました。
リクエストパス html は、web.xmlのリクエストURLパターン "*.xhtml" にマッチしなかったため、
DispatcherServletは動作せず、Tomcatによって普通のHTMLファイルとして処理されたことになります。
つまり、Thymeleafの魔法が解けて花子さんに戻った訳ですね。
いかがでしたか?
サーブレットから、viewへのパラメータレスポンスの流れは掴めてもらえたでしょうか。
では、次はこの逆。viewからサーブレットへのパラメータリクエストのプログラムに進みます。