48107
SpringとhibernateのDBアクセスの機能を使ってviewから受け取ったselectで始まるSQL文を実行して表示する簡単なwebアプリを作ってみたいと思っていますが今どきjspは使わないと聞きました。  
どうやらThymeleafというのを使うようですが具体的にはどうするのでしょうか？  
私はSpring bootの知識はなくSpring web MVCの初歩的知識はあります。  
form:やspring:タグは使えないと思いますがどのようにアプローチしますか。  
Spring MVCは忘れてSpring bootを勉強し直したほうがいいでしょうか？
CC BY-SA 4.0
2018-09-05T02:38:18.597
48097
2019-07-04T04:44:59.757
29623
question
java spring database spring-boot thymeleaf
SpringでJSPを使わない
Spring MVCのアプリがあるのであれば、以下のような手順でJSPをThymeleafに移行できたと思います。

  1. `pom.xm`(Mavenを使っている場合)に、`thymeleaf-spring`の`dependency`を追加する（以下は例）
```     <dependency>

        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf-spring4</artifactId>
    </dependency>
    
```

  2. Spring MVCのBean定義xmlにThymeleafと連携するための設定を追加する
```     <bean id="templateResolver"
class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">

      <property name="prefix" value="/WEB-INF/templates/" />
      <property name="suffix" value=".html" />
      <property name="templateMode" value="HTML5" />
      <property name="characterEncoding" value="UTF-8" />
    </bean>
    
    <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
      <property name="templateResolver" ref="templateResolver" />
    </bean>
    <bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
      <property name="templateEngine" ref="templateEngine" />
      <property name="characterEncoding" value="UTF-8" />
    </bean>
    
```

  3. JSPの代わりになるHTMLファイルをつくって動作確認する（JSP(JSTL)の`c:out`をThymeleafの`th:text`に変更するような修正が必要になります。ControllerはJSP用のものをそのまま使えるはずです）

/WEB-INF/templates/test.html

```     <!DOCTYPE html>

    <html xmlns:th="http://www.thymeleaf.org">
      <head>
        <meta charset="UTF-8"/>
        <title>Thymeleaf</title>
      </head>
      <body>
        <span th:text="${test}"></span>
      </body>
    </html>
    
```

TestController.java

```     @Controller

    public class TestController {
        @RequestMapping(value = "", method = {RequestMethod.GET, RequestMethod.POST})
        public String test(Model model) {
            model.addAttribute("Test", "Test Thymeleaf!!");
            return "test";
        }
    }
    
```

※動作確認をしていないので、細かい部分で間違いはあるかもしれませんが、この程度の変更でよかったはずです。

JSPを理解している人であれば、Thymeleafは難しくないと思います。
CC BY-SA 4.0
2018-09-05T06:13:59.203
48107
2018-09-05T06:37:53.450
2018-09-05T06:37:53.450
21092
21092
48097
answer
> 今どきjspは使わないと聞きました。

Spring BootでJSP利用を避けるべきだというのは[リファレンスにもあります](https://docs.spring.io/spring-
boot/docs/2.1.6.RELEASE/reference/html/boot-features-developing-web-
applications.html#boot-features-spring-mvc-template-
engines)が、理由はJSPを用いる場合には[いくつかの制約](https://docs.spring.io/spring-
boot/docs/2.1.6.RELEASE/reference/html/boot-features-developing-web-
applications.html#boot-features-jsp-limitations)が発生するためです。  
(主観になりますが、JSPとThymeleafの「今どき」具合は同程度だと思います。)

> Spring MVCは忘れてSpring bootを勉強し直したほうがいいでしょうか？

Spring Bootで用いられているのはSpring MVCそのものです。  
Spring MVCの知識はそのまま活用できます。

具体的な実装手順が知りたい、という点については、オフィシャルのガイド  
<https://spring.io/guides>  
で検索してみるのが一つの手段かと思います。  
例えばThymeleafであれば

  * [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/)

JDBCであれば

  * [Accessing Relational Data using JDBC with Spring](https://spring.io/guides/gs/relational-data-access/)

があり、それぞれ簡潔なサンプルコードも付随しています。
CC BY-SA 4.0
2019-07-04T04:44:59.757
56368
2019-07-04T04:44:59.757
2808
48097
answer