Mavenを利用してSpring MVCの開発をする

# はじめに
MavenからSpringを動かすときに毎回作成手順が煩わしいので、備忘録的に作成手順を書き残していきます。

参考書籍
[Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発](https://www.amazon.co.jp/Spring徹底入門-Spring-FrameworkによるJavaアプリケーション開発-株式会社NTTデータ/dp/4798142476/ref=sr_1_3?ie=UTF8&qid=1483748752&sr=8-3&keywords=spring "Qiita")
[[改訂新版]Spring入門 ――Javaフレームワーク・より良い設計とアーキテクチャ](https://www.amazon.co.jp/改訂新版-Spring入門-__Javaフレームワーク・より良い設計とアーキテクチャ-長谷川-裕一/dp/4774182176/ref=sr_1_17?ie=UTF8&qid=1483748752&sr=8-17&keywords=spring "[改訂新版]Spring入門 ――Javaフレームワーク・より良い設計とアーキテクチャ")
[Apache Maven 2.0入門 Java・オープンソース・ビルドツール](https://www.amazon.co.jp/Apache-Maven-2-0入門-Java・オープンソース・ビルドツール-野瀬/dp/477412964X/ref=sr_1_1?ie=UTF8&qid=1483748864&sr=8-1&keywords=maven "Apache Maven 2.0入門 Java・オープンソース・ビルドツール")


## EclipseからMavenプロジェクトを作成する
環境
Maven 3.3.9
Spring 4.2.6
JRE 1.8
Eclipse:Neon Release (4.6.0)


### 新規プロジェクトからMavenプロジェクトを選択して進んでいく
![スクリーンショット 2017-01-04 21.45.12.png](https://qiita-image-store.s3.amazonaws.com/0/156165/9493fb20-4c49-47a1-b737-cb1963607cde.png "スクリーンショット 2017-01-04 21.45.12.png")

![スクリーンショット 2017-01-04 21.45.24.png](https://qiita-image-store.s3.amazonaws.com/0/156165/8ded9b07-1aca-f3e8-b959-6f99c082a14d.png "スクリーンショット 2017-01-04 21.45.24.png")

### アーキタイプ　webappを選択
![スクリーンショット 2017-01-04 21.45.35.png](https://qiita-image-store.s3.amazonaws.com/0/156165/5a9066b3-fb25-f1a2-f4d1-82e372ddde28.png "スクリーンショット 2017-01-04 21.45.35.png")

### グループID アーティファクトidを入力して完了
![スクリーンショット 2017-01-04 21.45.54.png](https://qiita-image-store.s3.amazonaws.com/0/156165/79fb934d-19e5-b06b-82cf-de0284128b29.png "スクリーンショット 2017-01-04 21.45.54.png")

### 最終的なフォルダ構成はこうなります。
初期状態ではjspにエラーがありますが、依存関係が追加されいないため、問題ありません。

![スクリーンショット 2017-01-07 9.32.39.png](https://qiita-image-store.s3.amazonaws.com/0/156165/7ef7eef3-73cc-ba2c-e45d-ddb58c3db2dd.png "スクリーンショット 2017-01-07 9.32.39.png")

## ファイルの設定
###pom.xmlで依存関係ライブラリを管理します。
必要なライブラリがある場合はMavenの公式サイトで調べます。
[Maven公式サイト](http://mvnrepository.com "Mave")


```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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>work</groupId>
  <artifactId>app</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>app Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <dependencyManagement>
  <dependencies>

    <!-- ① -->
    <dependency>
    	<groupId>io.spring.platform</groupId>
    	<artifactId>platform-bom</artifactId>
    	<version>2.0.5.RELEASE</version>
    	<type>pom</type>
    	<scope>import</scope>
    </dependency>
    
  </dependencies>
  </dependencyManagement>

    <!-- ② -->
  <dependencies>
    <dependency>
    	<groupId>javax.servlet</groupId>
    	<artifactId>javax.servlet-api</artifactId>
    	<scope>provided</scope>
    </dependency>
    <dependency>
    	<groupId>org.apache.taglibs</groupId>
    	<artifactId>taglibs-standard-jstlel</artifactId>
    </dependency>

    
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>app</finalName>
    <pluginManagement>
    	<plugins>
    		<plugin>
    			<artifactId>maven-compiler-plugin</artifactId>
    			<configuration>
    				<soruce>1.8</soruce>
    				<target>1.8</target>
    			</configuration>
    		</plugin>
    	</plugins>
    </pluginManagement>
  </build>
</project>
```

①
Spring IO Platform のライブラリを追加します。
共通の依存のライブラリのバージョンを標準化して、動作の保証を行っています。

②
Servlet APiの依存ライブリを追加します。
これで、jspのエラーが解決します。

上記を追加したら
プロジェクトで右クリック →「Maven」→「プロジェクトの更新」を実行します。

### Web.xmlの修正

```xml:pom.xml
<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="
 	http://java.sun.com/xml/ns/javaee
 	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd 
 " 
 version="3.0"
 >
 
 <jsp-config>
 	<jsp-property-group>
 		<url-pattern>*.jsp</url-pattern>
 		<page-encoding>UTF-8</page-encoding>
 		<include-prelude>/WEB-INF/include.jsp</include-prelude> <!-- ① -->
 	</jsp-property-group>
 </jsp-config>
 
</web-app>
```



①各JSPの先頭にインクルードするファイルが指定できます。
よく使用するJSTL等を定義したファイルを使います。（省略可能）

後はサーバーで起動して
[http://localhost:8080/app/ ](http://localhost:8080/app/ "app")
にアクセスすると

![スクリーンショット 2017-01-14 13.51.53.png](https://qiita-image-store.s3.amazonaws.com/0/156165/f65a2ae9-e9c5-f117-5f59-68f856e151db.png "スクリーンショット 2017-01-14 13.51.53.png")

と表示できれば、起動までの確認が完了しました。

次回はcontrollerからアプリケーションを呼び出し、
thymeleafテンプレートを使用して表示していきます。