スキップしてメイン コンテンツに移動

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

スポンサーリンク
スポンサーリンク
スポンサーリンク

コメント

このブログの人気の投稿

axiosの使い方まとめ (GET/POST/例外処理)

axiosの使い方まとめ (GET/POST/例外処理)最近何かとよく使うJavaScriptでAJAX通信を行うaxiosについて、簡単に使い方をまとめました。GETリクエストをaxiosで送るまずはGETリクエストをaxiosで送る方法です。const res =await axios.get('/users') console.log(res.data)分割代入の記法を使うと、以下のようにも書けますconst{data}=await axios.get('/users') console.log(data)クエリパラメータ (URLパラメータ)を指定クエリパラメータを指定する方法は2つあります。1つ目は、axios.getに指定するURLに直接記述する方法です。axios.get('/user?id=123')2つめは、axios.getの第2引数に、オプション指定する方法です。axios.get('/user',{ params:{ id:123}})POSTリクエストをaxiosで送る次はPOSTリクエストをaxiosで送る方法です。JSON形式でPOSTするJSON形式でPOSTする場合は、axios.postの第2引数に、送信するデータをJavaScriptオブジェクトで指定します。const res =await axios.post('/user',{ id:123, name:'Yamada Tarou'})application/x-www-form-urlencoded形式でPOSTするapplication/x-www-form-urlencoded形式でPOSTする場合は、URLSearchParamsを使います。var params =newURLSearchParams() params.append('id',123) params.append('name','Yamada Tarou')const res =await axios.post('/user', params)axios でファイルをアップロードする画像などのファイルを、axiosでアッ…

[VB, C#] Windows 8, Window 10 で ImeModeが制御できない問題を解決する

[VB, C#] Windows 8, Window 10 で ImeModeが制御できない問題を解決するタイトルの通りですが、Windows 8 以降では Windows Form アプリケーションで、コントロールの ImeMode に Katakana や KatakanaHalf を設定しても、カタカナになってくれません。なぜ ImeMode が効かないのか?Windows 8 以降、IME Mode の切り替えは、ユーザー単位で切り替わるようになった為、アプリから IME Mode 制御が出来ないようになりました。
(IME をON にした場合、常に ひらがな モードになます)※ Windows 7までは、IME Modeの切り替えはアプリ単位で行われていた為、問題なくアプリから IME制御が行えました。対処方法Windows 8 以降、IMEの制御は、InputScope クラスの利用が推奨されています。
しかし、InputScope クラスは、WPF、Windows ストアアプリでしか使えない為、Windows Formアプリでは使用できません。
(Windows Form はもう使うな!という事でしょうか (涙) )結論としては、コントールパネルの設定で、IMEの制御をユーザ単位から アプリ単位に変更する事ができます。
これで、Windows Formアプリでも 従来通りIMEの制御を行う事が出来ます。おわりにこの方法だと、アプリをインストールする端末すべてに設定が必要となり、とっても面倒です。。。
しかし、今の所これしか方法がない状態です。
これからは Windows Formではなく、WPFや Windows ストアアプリで作れという事ですかね (^^;)

MailKitの使い方! エンコーディング指定や添付ファイをメールで送信する方法[C#/VB Tips]

MailKitの使い方! エンコーディング指定や添付ファイをメールで送信する方法[C#/VB Tips]MailKitを使ってメールを送るサンプルコードです。(C#)UTF8/iso-2022-jpのエンコーディング指定、GMail/YahooのSMTPサーバで送るなど、4つのサンプルコードでMailKitの使い方を紹介します。MailKitって何?2017年に.NET標準のSystem.Net.Mail.SmtpClientが廃止予定となり、Microsoftより今後はオープンソースライブラリである、MailKitに置き換えるとアナウンスがありました。既にSmtpClientは非推奨になっており、今後は廃止されていきます。現在、SmtpClientを使用したソースコードには、Visual StudioからMailKitを使うよう警告が出るようになっています。さっそく、MailKitを使ってメールを送信するサンプルコードを作っていきます。UTF8でメールを送信文字エンコーディングを、UTF8でメールを送信するサンプルコードです。
MailKitは、デフォルトの文字エンコーディングがUTF8なっている為、シンプルなコードでメールを送信する事ができます。var host ="<smtp server name>"; var port =25;// or 587using(var smtp =new MailKit.Net.Smtp.SmtpClient()){//SMTPサーバに接続する smtp.Connect(host, port, MailKit.Security.SecureSocketOptions.Auto);//認証が必要な場合は、以下のコメントを解除//smtp.Authenticate("<id>", "<password>");//送信するメールを作成する var mail =new MimeKit.MimeMessage(); var builder =new MimeKit.BodyBuilder(); mail.From.Add(new MimeKit.MailboxAddress("",&quo…