TOP →
Java →
spring → This Page
2.共通部分構築 Spring+MVC+DB+Test構築サンプル
前提
このページに記載している内容は 2018/09/24 に書かれたものです。
掲載している画面や方法が将来的に変更されている場合があります。
また、掲載しているインストール方法は Windows 8.1 の場合です。
開発環境は
・Windows 8.1
・JDK 8
・STS(Spring Tool Suite) 3.9.5
・PostgreSQL 9.5.14
とします。
目次
1.プロジェクトの作成
2.Maven Update Project
3.Maven clean
4.Maven install
5.確認実行
6.pom.xml編集
7.Maven Update Project
8.プロジェクトのJREを元に戻す
9.Java Compiler設定
10.Facets設定
11.index.jsp編集
12.result.jsp作成
13.TestController.java作成
14.mvc-config.xml編集
15.web.xml編集(Filter設定追加)
16.Maven clean
17.Maven install
18.Project Clean
19.確認実行
やることが多いですが、1つ1つは大したことがないので、めげずに頑張りましょう。
1.プロジェクトの作成
STS(Spring Tool Suite)を起動しましょう。
起動したらメニューから「File」>「New」>「Spring Legacy Project」を選択します。
「New Spring Legacy Project」ダイアログが表示されます。
以下の通り入力・選択して「Finish」ボタンを押しましょう。
項目 |
入力・設定値 |
Project name |
お好きなプロジェクト名を入力しましょう
本サイトではどのDBアクセス方法を選択するかによって決めたいと思います。
(以降のページでも以下のプロジェクト名で説明するので合わせておいた方が無難です)
JdbcTemplate→WebDbSample1JdbcTemplate
EntityManager→WebDbSample2EntityManager
JpaRepository→WebDbSample3JpaRepository
Criteria API→WebDbSample4CriteriaAPI
|
Use default location |
チェックを入れたまま |
Templates |
「Simple Projects」>「Simple Spring Web Maven」を選択 |
Working sets |
チェックを入れない |
プロジェクトが作成されます。
(しばらく画面右下にBuild状況が表示されるのでそれが消えるまでは何も触らないこと)
2.Maven Update Project
プロジェクト名を右クリックして「Maven」>「Update Project」を選択します。
「Update Maven Project」ダイアログが表示されます。
先ほど作成したプロジェクトにチェックが入っていることを確認し、「OK」ボタンを押します。
(しばらく画面右下にBuild状況が表示されるのでそれが消えるまでは何も触らないこと)
3.Maven clean
プロジェクト名を右クリックして「Run As」>「Maven clean」を選択します。
「Console」に「[INFO] Finished at ...」と表示されるまで待ちましょう。
4.Maven install
プロジェクト名を右クリックして「Run As」>「Maven install」を選択します。
先ほどと同様に「Console」に「[INFO] Finished at ...」と表示されるまで待ちましょう。
5.確認実行
プロジェクト名を右クリックして「Run As」>「Run On Server」を選択します。
「Run On Server」ダイアログが表示されます。
以下の通り入力・選択して「Next」ボタンを押します。
項目 |
入力・設定値 |
Choose an existing server |
選択(デフォルトで選択されているはず) |
Server |
「Pivotal tc Server ...」を選択 (デフォルトで選択されているはず) |
Always use this server ... |
チェックを入れる |
右側の「Configured」に、作成したプロジェクトが入っていることを確認し、「Finish」ボタンを押します。
少し時間がかかりますが「Console」に状況が表示されていきます。
しばらくすると内蔵ブラウザが立ち上がり、「Click to enter」と表示されれば成功です。
場合によってはセキュリティの警告画面が表示されるかもしれません。
表示されたら「アクセスを許可する」を押しましょう。
表示されたのはプロジェクト作成時に自動作成されていた index.jsp です。
まだリンク遷移先がないのでクリックしてもエラーになります。
では実行確認ができたのでサーバを停止しましょう。
画面下にある「Servers」の赤い四角ボタンを押しましょう。
しばらくするとサーバーが停止します。
6.pom.xml編集
さて、ここからが本番?です。
Spring+MVC+DB の環境設定を準備しましょう。
「pom.xml」を編集して「Maven」に必要なライブラリを揃えてもらいます。
ただし、ここではまだDBアクセスごとの個別の設定はせず、共通部分のみを設定します。
プロジェクト直下にある「pom.xml」をダブルクリックして開きます。
開いたら下のタブを「pom.xml」に切り替えます(最初からpom.xmlになっている場合もあります)
以下の内容に書き換えて保存します。
保存すると必要なライブラリのダウンロードやビルドが始まるのでしばらく待ちましょう。
(初回は結構時間がかかります)
赤文字の部分はプロジェクト名を入力しましょう。
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>jp.mitchy</groupId>
<artifactId>WebDbSample1JdbcTemplate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<!-- Generic properties -->
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Web -->
<jsp.version>2.2</jsp.version>
<jstl.version>1.2</jstl.version>
<servlet.version>3.1.0</servlet.version>
<!-- Spring -->
<spring-framework.version>5.0.2.RELEASE</spring-framework.version>
<!-- Hibernate / JPA -->
<hibernate.version>5.2.4.Final</hibernate.version>
<!-- Logging -->
<logback.version>1.2.3</logback.version>
<slf4j.version>1.7.25</slf4j.version>
<!-- Test -->
<junit.version>4.12</junit.version>
</properties>
<dependencies>
<!-- Spring MVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!-- Other Web dependencies -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp.version}</version>
<scope>provided</scope>
</dependency>
<!-- Spring and Transactions -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!-- Logging with SLF4J & LogBack -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<scope>runtime</scope>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- Test Artifacts -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring-framework.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
7.Maven Update Project
プロジェクト名を右クリックして「Maven」>「Update Project」を選択します。
「Update Maven Project」ダイアログが表示されます。
プロジェクトにチェックが入っていることを確認し、「OK」ボタンを押します。
(しばらく画面右下にBuild状況が表示されるのでそれが消えるまでは何も触らないこと)
8.プロジェクトのJREを元に戻す
プロジェクトの「JRE System Library」が「J2SE-1.5」になっているので変更します。
プロジェクトの「JRE System Library」を右クリックして「Properties」を選択します。
「Properties for JRE System Library」ダイアログが表示されます。
「Workspace default JRE」を選択して「Apply and Close」ボタンを押します。
これでプロジェクトの「JRE System Library」が「jdk1.8」になったと思います。
9.Java Compiler設定
プロジェクト名を右クリックして「Properties」を選択します。
「Properties」ダイアログが表示されます。
左側のツリーから「Java Compiler」を選択します。
もしここで右側のドロップダウンリストが「1.8」になっていない場合は「1.8」にして「Apply」ボタンを押します。
警告が表示されたら「Yes」ボタンを押しましょう。
10.Facets設定
「Properties」ダイアログを開いたまま次の設定をします。
左側のツリーから「Project Facets」を選択します。
「Dynamic Web Module」を「3.1」に、「Java」を「1.8」にして
「Apply and Close」ボタンを押します。
11.index.jsp編集
プロジェクトを展開し、下のほうにあるsrcフォルダにある以下のファイルをダブルクリックして開きます。
src/main/webapp/index.jsp
リンクの記述箇所を"/showMessage.html"から"/test/check"に変更して保存しましょう。
12.result.jsp作成
プロジェクト名を右クリックして「New」>「Other」を選択します。
「New」ダイアログが表示されます。
ツリーから「Web」>「JSP File」を選択して「Next」ボタンを押します。
「New JSP File」画面でフォルダを
src/main/webapp/WEB-INF/view/test/
とし、「File name」を「result.jsp」として「Finish」ボタンを押します。
「result.jsp」の内容を以下のように書き換えて保存しましょう。
コントローラから受け取った data と list という名前の属性値を表示するだけのページです。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>テスト</title>
</head>
<body>
<h1>DB取得結果</h1>
<div>単体 = [${data}]</div>
<div>リスト = [${list}]</div>
</body>
</html>
test フォルダに作成されていることを確認して下さい。
13.TestController.java作成
プロジェクト名を右クリックして「New」>「Class」を選択します。
「New Java Class」ダイアログが表示されます。
・「Package」は「jp.mitchy.controller」と入力する。
・「Name」は「TestController」と入力する。
・それ以外の項目はそのままにしておく
「Finish」ボタンを押します。
作成された「TestController.java」が開くので、内容を以下のように書き換えて保存しましょう。
package jp.mitchy.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RequestMapping("/test/*")
@Controller
public class TestController {
@RequestMapping(value = "/check", method = RequestMethod.GET)
public String test(Model model) {
model.addAttribute("data", "なし");
model.addAttribute("list", "なし");
// /WEB-INF/view/test/result.jsp を表示
return "test/result";
}
}
クラス名に @RequestMapping("/test/*") を指定することで
http://サーバ/プロジェクト名/test/
のURLに対応したコントローラとなります。
同じくクラス名に @Controller を指定することで
MVC のコントローラとなります。
メソッド名に @RequestMapping(value = "/check", method = RequestMethod.GET)
を指定することで
http://サーバ/プロジェクト名/test/check
のURLに対応したメソッドとなります。
クラス名につけた @RequestMapping と メソッド名につけた @RequestMapping
の組み合わせの URL に対応します。
model.addAttribute("data", "なし");
を指定することで
先ほど JSP に記載した
${data}
に "なし" と表示されます。
そして最後の
return "test/result";
で /WEB-INF/view/test/result.jsp がレスポンスとしてクライアントに返されます。
これは次に出てくる mvc-config.xml でも解説します。
14.mvc-config.xml編集
src/main/webapp/WEB-INF/mvc-config.xmlをダブルクリックして開きます。
<beans...>から</beans>の間の適当な場所に
<context:component-scan base-package="jp.mitchy.controller" />
を追記して保存しましょう。
これでコントローラーが先ほど作成したクラスのパッケージにあることが設定されました。
また、
prefixが/WEB-INF/view/
suffixが.jsp
という設定箇所があります。
(図の緑カッコの中)
これが先ほど TestController のメソッドに記載した return
と連動しており、
"/WEB-INF/view/" + return 値 + ".jsp"
つまり
return "test/result";
が
/WEB-INF/view/test/result.jsp
となる仕組みです。
15.web.xml編集(Filter設定追加)
src/main/webapp/WEB-INF/web.xmlをダブルクリックして開きます。
末尾の</web-app>の直前の行に以下のFilter設定を追記して保存しましょう。
これがないと日本語(全角文字列)が文字化けしてしまいます。
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
16.Maven clean
プロジェクト名を右クリックして「Run As」>「Maven clean」を選択します。
「Console」に「[INFO] Finished at ...」と表示されるまで待ちましょう。
17.Maven install
プロジェクト名を右クリックして「Run As」>「Maven install」を選択します。
先ほどと同様に「Console」に「[INFO] Finished at ...」と表示されるまで待ちましょう。
もしかしから以下のエラーが「Console」に表示されるかもしれません。
[ERROR] No compiler is provided in this environment.
そうなったら次の「18.Project Clean」を実施してから
再度「17.Maven install」をやってみましょう。
18.Project Clean
本作業は「17.Maven install」で
[ERROR] No compiler is provided in this environment.
のエラーが出たときだけ実施すればよいです。
STSメニューの「Project」>「Clean」を選択します。
「Clean」ダイアログが表示されます。
プロジェクトにチェックが入っていることを確認して「Clean」ボタンを押します。
(JRE System Library や Project Facets を変更したあとはこれをやらないと後々のコンパイルでエラーになることがある)
再度「17.Maven install」をやってみましょう。
19.確認実行
プロジェクト名を右クリックして「Run As」>「Run On Server」を選択します。
少し時間がかかりますが「Console」に状況が表示されていきます。
しばらくすると内蔵ブラウザが立ち上がり、「Click to enter」と表示されます。
「Click to enter」のリンクをクリックしてみましょう。
リンク先 /test/check に連動する TestController クラスの test メソッドが呼び出され、
/WEB-INF/view/test/result.jsp が表示されることが確認できます。
長かったですが、以上で共通部分構築の完了です。
ダウンロード
作成したプロジェクトのソースをダウンロードできます。
DBアクセス方法別に4つとも用意しています。
更新履歴
2018/09/24 新規作成
TOP →
Java →
spring → This Page