spring bootでは、テンプレートエンジンである thymeleaf を 推奨?しているようですが、身の回りに jsp があふれているので spring boot での jsp を利用法を試してみた。
詳細は以下で、とりあえず使えるようにした程度です。 jsp側でifや、for-loopは利用しない主義で、その辺りはjquery.templateにまかせています。
STEP1 - pom.xml の編集
spring-boot-starter-thymeleaf をコメントアウトし、 tomcat-embed-jasper を追加
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> -->
STEP2 - jspファイル用ディレクトリの作成
「 src/main/webapp/WEB-INF/jsp/ 」を作成
STEP3 - application.properties の編集
spring.mvc.view.prefix= /WEB-INF/jsp/ spring.mvc.view.suffix= .jsp
STEP4 - jspファイルの作成
UserBaseInfo.jsp というファイル名にしています
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> </head> <body> ここは固定文字列。<br> <br> ここは変数を参照→ ${userAdmin.uid} </body> </html>
STEP5 - java コントローラの作成
package jp.end0tknr.stemdoc.ctrl; import java.util.Map; import javax.sql.DataSource; import jp.end0tknr.stemdoc.objmodel.UserBase; import jp.end0tknr.stemdoc.objmodel.UserDoc; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Controller public class UserBaseInfo { private static final Logger logger = LoggerFactory.getLogger(UserBaseInfo.class); @Autowired private JdbcTemplate jdbcTemplate; @RequestMapping(value="/UserBaseInfo/{userCode}") public String index (@PathVariable String userCode, Model model) { logger.info("start index()"); DataSource dataSource = jdbcTemplate.getDataSource(); UserBase userBase; Map<String, Object> userBaseOrg; try { userBase = new UserBase(dataSource,userCode); userBaseOrg = userBase.getAtris(); } catch (Exception e1) { logger.error("fail new UserBase() for "+ userCode); return null; } // jspへ渡す変数の設定 model.addAttribute("userBase", userBase); model.addAttribute("userBaseOrg", userBaseOrg); try { UserDoc userDoc = new UserDoc(dataSource, userCode); userDoc.testS3(); } catch (Exception e) { e.printStackTrace(); } logger.info("done index()"); return "UserBaseInfo"; //これで、UserBaseInfo.jsp が呼ばれる } }