Java10 + Spring MVC + MyBatis の環境構築

2018年7月5日木曜日

Java Spring

t f B! P L

Java10 + Spring MVC + MyBatis の環境構築

はじめに

Java 1.10 + Spring MVC + MyBatis で
Web アプリケーションを構築する機会があったので、
その覚書です。

プロジェクトの構成

今回作成するプロジェクトは、以下の構成となります。

  • Eclipce は 4.8 photon を使用
  • Java 1.10 ( Oracle JDK )
  • Tomcat 9 ( All in one Eclipce 付属の Tomcat を使用)
  • Spring MVC (レガシー Spring MVCプロジェクトで作成)
  • DB周りは MyBatis-Spring (1.3.2)
  • HTML周りのテンプレートエンジンは JSP
  • レイアウトの共通化に Apache Tiles (3.0.5) を使用

* 構成のポイント *

開発用途のため、ソースを編集したら、すぐ反映されるようにする

毎回 maven の deploy をするのは面倒なので、java/jsp等を編集した際に、自動的に Tomcat が再ロードするように、開発環境を構築します。

最新の Java、Spring Framework を使用する

Spring Tool の 「レガシー Spring MVC プロジェクト」を使用すると、古いバージョンの Java と Spring Framework を使用する為、最新版(2018/07時点) を使用するように構成を変更します。

□ 変更前

バージョン
java 1.6
Spring Framework 3.0

□ 変更後

バージョン
java 1.10
Spring Framework 5.5

1. Eclipce の導入

こちら のサイトより、Pleiades All in One の Eclipse 4.8 Photon をダウンロードします。
ダウンロードするのは、Java の Full Edition です。

enter image description here

2. Spring Tool のインストール

  1. メニューから [ヘルプ] > [Eclipseマーケットプレース] を選択
  2. 検索ボックスに “STS” と入力し、検索を実行
  3. “Spring Tool Suite(STS) for Eclipse x.x.x.RELEASE” が検索結果に表示されます
  4. インストールボタンをクリックし、指示に従いインストールを行います。

3. Spring MVCプロジェクトの作成

  1. [ファイル] > [新規] > [その他]
  2. 一覧より [Spring レガシー・プロジェクト] を選択し [次へ]をクリック
  3. プロジェクト名を入力
  4. テンプレートより [Spring MVC Project] を選択し、[次へ]をクリック
  5. パッケージ名を入力し、[完了]をクリック

4. Pom.xml の編集

pom.xml を編集し、バージョンの変更および依存関係の追加を行います。

java と Spring Framework のバージョン変更

以下の通り使用する java と Spring Framework のバージョンを変更します。

<properties>
 <java-version>1.10</java-version>  <!--これと-->
 <org.springframework-version>5.0.5.RELEASE</org.springframework-version>  <!--これ-->
 <org.aspectj-version>1.6.10</org.aspectj-version>
 <org.slf4j-version>1.6.6</org.slf4j-version>
</properties>

mybatis-spring と Apache Tiles の追加

以下の内容を pom.xml に追加します。

<!-- mybatis-spring -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.2</version>
</dependency>

<!-- Apache Tiles -->
<dependency>
  <groupId>org.apache.tiles</groupId>
  <artifactId>tiles-extras</artifactId>
  <version>3.0.5</version>
</dependency>

5. 共通 JSP の定義

タグライブラリの設定等、毎回 JSP ファイルに書くのは
面倒で煩雑になるので、共通で設定を行う include.jsp を作成します。

include.jsp を作成する場所

project/
 ├ src/main/webapp/views/common/
 │  └ include.jsp

include.jsp の内容

<%@ page session="false"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>

web.xml に include.jsp が読み込まれるように設定します

<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <el-ignored>false</el-ignored>
    <page-encoding>UTF-8</page-encoding>
    <scripting-invalid>false</scripting-invalid>
    <include-prelude>/WEB-INF/views/common/include.jsp</include-prelude> 
  </jsp-property-group>
</jsp-config>

6. Apache Tiles の設定

spring-context.xmlを編集します。

spring-context.xml の場所

project/
 ├ src/main/webapp/spring/
 │  └ spring-context.xml

 <beans:bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
    <beans:property name="prefix" value="/WEB-INF/views/"/>
    <beans:property name="suffix" value=".jsp" />
    <beans:property name="order" value="1" /> <!--これを追加-->
 </beans:bean>

<!--ここから追加-->
 <beans:bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
    <beans:property name="order" value="0"/> <!-- id="viewResolver"よりも優先度を高くする -->
 </beans:bean>
 <beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer" >
   <beans:property name="definitions">
     <beans:list>
       <beans:value>/WEB-INF/tiles.xml</value> <!-- Tilesの定義ファイルの指定 -->
     </beans:list>
   </beans:property>
 </beans:bean>

Tiles の定義ファイルを作成します

上で定義した Tiles 定義ファイルの場所に、tiles.xml を作成します。

tiles.xml を作成する場所

project/
 ├ src/main/webapp/WEB-INF/
 │  └ tiles.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">

<tiles-definitions>
  <definition name="baseLayout" template="/WEB-INF/views/common/layout.jsp">
    <put-attribute name="header" value="/WEB-INF/views/common/header.jsp" />
  </definition>

  <definition name="home" extends="baseLayout">
    <put-attribute name="title" value="ホーム" />
    <put-attribute name="body" value="/WEB-INF/views/home.jsp"/>
  </definition>
</tiles-definitions>

7. 共通レイアウトの作成

  • layout.jsp ( /WEB-INF/views/common/ に作成 )
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head>
  <title><tiles:getAsString name="title"/></title>
  <tiles:insertAttribute name="header" />
</head>
<body>
  <tiles:insertAttribute name="body" />
</body>
</html>
  • header.jsp ( /WEB-INF/views/common/ に作成 )
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="false" %>
<div>ヘッダです</div>

8. HomeContoller の作成

プロジェクト作成時に自動生成された HomeContoller.java と、 home.jsp を編集します。

  • HomeContoller.java
package com.sample.mvc;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class HomeController {

 @RequestMapping(value = "/", method = RequestMethod.GET)
 public String home(Locale locale, Model model) {
  return "home";
 }
}
  • home.jsp
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<div>ホーム画面です。</div>

9. Tomcat の設定

All in One の Eclipse 付属の Tomcat の設定を行い、
今回作成した Webアプリが起動できように設定します。

  1. サーバビューより、[新規] > [サーバ] を選択します。

  2. 一覧から Tomcat v9.0 を選択します。
    enter image description here

  3. 下記の通り、作成したプロジェクトを Webモジュールとして追加します。
    enter image description here
    enter image description here

  4. サーバビューに追加したTomcat および プロジェクトが表示されればOKです。
    enter image description here

10. 実行

http://localhost:8080/mvc をブラウザで開いて、以下のような表示になれば成功です。

enter image description here

おわりに

今回 MyBatis については、環境構築のみで、サンプルコードは作成していません。
公式サイト にスタートアップガイドがあり、
こちらが参考になります。

開発に役立つサイト

  • Spring のタグライブラリについて、非常に分かりやすく纏められたサイトです。

コンピュータクワガタ
http://kuwalab.hatenablog.jp/entry/20130118/p1

  • Struts から SpringMVC へ移行する際に参考になるサイトです

StrutsからSpringMVCへの移行まとめ
https://qiita.com/H2010604/items/2093ba0fcbcfd544818a

スポンサーリンク

QooQ