[adsense]
はじめに
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 です。
2. Spring Tool のインストール
- メニューから [ヘルプ] > [Eclipseマーケットプレース] を選択
- 検索ボックスに “STS” と入力し、検索を実行
- “Spring Tool Suite(STS) for Eclipse x.x.x.RELEASE” が検索結果に表示されます
- インストールボタンをクリックし、指示に従いインストールを行います。
3. Spring MVCプロジェクトの作成
- [ファイル] > [新規] > [その他]
- 一覧より [Spring レガシー・プロジェクト] を選択し [次へ]をクリック
- プロジェクト名を入力
- テンプレートより [Spring MVC Project] を選択し、[次へ]をクリック
- パッケージ名を入力し、[完了]をクリック
[adsense]
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>
[adsense]
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アプリが起動できように設定します。
-
サーバビューより、[新規] > [サーバ] を選択します。
-
一覧から Tomcat v9.0 を選択します。
-
下記の通り、作成したプロジェクトを Webモジュールとして追加します。
-
サーバビューに追加したTomcat および プロジェクトが表示されればOKです。
10. 実行
http://localhost:8080/mvc をブラウザで開いて、以下のような表示になれば成功です。
[adsense]
おわりに
今回 MyBatis については、環境構築のみで、サンプルコードは作成していません。
公式サイト にスタートアップガイドがあり、
こちらが参考になります。
開発に役立つサイト
- Spring のタグライブラリについて、非常に分かりやすく纏められたサイトです。
- Struts から SpringMVC へ移行する際に参考になるサイトです
StrutsからSpringMVCへの移行まとめ
https://qiita.com/H2010604/items/2093ba0fcbcfd544818a
0 件のコメント:
コメントを投稿