ぼっち大学生のプログラミング日記

得た知識やコードを並べることで自身の成長を試みるためのブログです。

ThymeleafとJSP


ブログを作るにあたって,JSPとThymeleafのどっちにすればいいか悩んだので,JSPとThymeleafを共存させる方法を紹介します.

なお,環境はMavenプロジェクトにおけるSpringMVCフレームワークを採用します.

 

また,web.xmlやapplication-context.xml,spring-mvc.xml,pom.xmlの設定は済んでいるものとします.

 

今回,変更を加えるのはディレクトリの階層とspring-mvc.xmlの中身です.

 

まず,次のようにwebapp下にディレクトリを配置します.

 

 f:id:champon1020:20190507175227j:plain

 

これでディレクトリの設定は完了です.

次にspring-mvc.xmlの設定をします.spring-mvc.xmlとはweb.xmlにおいて,dispatcherサーブレットを定義した時の,contextConfigです.

spring-mvc.xmlはwebapp配下ならどこにおいてもいいですが,web.xmlのdispatcherサーブレット定義においてちゃんとcontextConfigLocationで指定してください.

 

話を戻して,spring-mvc.xmlに記述していきます.まずはThymeleafの設定です.

 

f:id:champon1020:20190507180955p:plain

 

重要なのは

 

  <property name="viewNames" value="thymeleaf/* />

  <property name="order" vavlue="1" />

 

です.

ここが,普通にThymeleafを設定する際に違う点です.viewNamesでThymeleafを表示する際の名前パターンを指定しています.

orderというのはViewResolverを使用する優先度ですね.

 

同様にJSPです.

f:id:champon1020:20190507180951p:plain

 

JSPではInternalResourceViewResolverを使います.

先ほどとほな滋養にviewNamesで名前パターン,orderでViewResolverの優先順位を指定しています.この場合は優先順位はJSP < Thymeleafですね.

 

prefixやsuffixって何?っていう方は,参考書か何かを読んでみたり,Qittaなどにも載ってるのでそれを見てください.英語が読める人はReferenceを読むのが手っ取り早いと思います.

 

あとは,sample.htmlとsample.jspを記述して,コントローラを作成するだけですね.コントローラの戻り値はそれぞれ

 

  return "thymeleaf/sample";

  return "jsp/sample";

 

とすれば問題ないです.他は普通通りです.

 

 

ここまで書いてきたわけですが,ブログ制作にあたってはThymeleafを使うことにしました.

最初はJSPとThymeleafを共存するつもりでしたが,なんかめんどくさそうになりそうだったので,あまり触ったことのないThymeleafに統一することに決めました.

 

でも,

 

    せっかく共存できたからもったいないなー...

 

とか思っちゃったので,ここに残します笑

 

 

 

参考文献:https://uchi-fashion.hatenablog.com/entry/2017/07/01/164346