2016/10/16

Mavenプロジェクトで Spring MVC の Hello World を作成する方法


はじめに

STS (Spring Tool Suite - Eclipse の派生) で、Maven プロジェクトを作成して Spring MVC で Hello World をしようと思ったのですが、思いの外手間取ったのでそのハマりどころを含めて作業手順を残しておきます。

なお、STS のインストールはすでにできている前提とします。

といっても、JDK 1.8 をインストールして STS をダウンロードするだけですけどね。

 

 

Maven プロジェクトの作成

STS を立ち上げて、File > New > Maven Project から、Maven プロジェクトを作成します。

なお、説明で使用している STS は英語版なので日本語化している、もしくは Eclipse に STS のプラグインをインストールして使用している方は、日本語に読み替えてください。

 

‘Create a simple project’ にチェックを入れて、Next をクリックします。

Pic01

 

Group Id: samplemvc,  Artifact Id: samplemvc, Packaging: war を設定して、Finish をクリックすると Mavenプロジェクトが作成されます。

Pic02

 

Maven プロジェクトを作成すると、Java のバージョンが 1.5 になってしまいます。これを Java 1.8 で動作させるためにはpom.xml を編集する必要がありますが、それは後ほど説明します。

Pic03

 

Spring MVC のインストール

pom.xml を Maven POM Editor で開いて、Dependencies タブを表示します。

Pic04

 

画面左側の Add をクリックして以下の画面を表示して、検索ボックスに ’spring’ を入力してエンターキーを押します。すると Spring のパッケージ一覧が表示されるので ’spring-webmvc’ をクリックします。Group Id、Artifact Id、Version がセットされるので、内容を確認して OK をクリックします。

Pic05

 

pom.xml の変更を保存します。

 

Java のバージョンを変更

Java のバージョンを 1.8 にするには、 pom.xml をテキストエディタで開き編集します。

以下の Java の <build> タグを追加して保存します。

<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>samplemvc</groupId>   <artifactId>samplemvc</artifactId>   <version>0.0.1-SNAPSHOT</version>   <packaging>war</packaging>   <dependencies>     <dependency>       <groupId>org.springframework</groupId>       <artifactId>spring-webmvc</artifactId>       <version>4.2.6.RELEASE</version>     </dependency>   </dependencies>     <!--Javaのバージョンの指定追加-->   <build>     <plugins>       <plugin>         <artifactId>maven-compiler-plugin</artifactId>           <configuration>             <source>1.8</source>             <target>1.8</target>           </configuration>       </plugin>     </plugins>   </build> </project>

 

ここで、samplemvc プロジェクトを右クリックして、Maven > Update Project を実行すると、プロジェクトで必要なパッケージがダウンロードされ、Java のバージョンも 1.8 になります。

Pic06

 

web.xml , applicationContent.xml の作成

以下の画像のように、webapp の下に空のフォルダとファイルを作成します。web.xml と applicationContext.xml は後ほど編集します。

Pic07

web.xml は、Web アプリケーションサーバー(今回はTomcat)の設定ですが、以下のように入力して保存してください。DispatcherServlet は Spring Web アプリケーションの入口となるサーブレットの設定です。

なお、この設定を行うことで、ずっと表示されていた pom.xml のエラーが解消されて、プロジェクトのエラーがなくなります。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  id="WebApp_ID" version="3.1">

  <display-name>Sample MVC</display-name>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value></param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
      <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

 

 

今度は、applicationContext.xml の設定を行います。このファイルでは Spring の設定を行っています。

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.1.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

  <context:component-scan base-package="samplemvc" />

  <mvc:annotation-driven />

  <bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
  </bean>
</beans>

 

 

これで システムの設定は終了です。

ようやく Web アプリケーション の作成に入れますね。

 

コントローラーとビューの作成

samplemvc.controller パッケージに HelloController クラスを作成します。アノテーションでいろいろ指定されていますが、この設定によりアドレスのマッピングやビューの名前解決がされます。

package samplemvc.controller;

import static org.springframework.web.bind.annotation.RequestMethod.GET;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {

	@RequestMapping(value = "/", method = GET)
	public String Hello(){
		return "hello";
	}
}

 

WEB-INF/views の下に hello.jsp ファイルを作成します。ファイルの内容は以下のようになります。

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    Hello World!
  </body>
</html>

とここで、JSP でエラーが表示されてしまいました。これは HttpServlet がプロジェクトにインポートされていないためです。先程の sprint-mvc と同じ要領で、javax.servlet.api を pom.xml に追加して Maven でプロジェクトをアップデートしてください。そうすればエラーは解消されます。

 

Web アプリケーションの実行

samplemvc プロジェクトを右クリックして、Run As > Run on Server を選択して Web アプリケーションを実行します。なお、事前にサーバーが登録されていないといけないのでサーバーの追加を行っておいてください。

実行した結果、無事に Hello World ! 画面が表示されていますね。

Pic08

 

おわりに

駆け足でしたが、Maven プロジェクトで Spring MVCの Hello World を作成する方法をご紹介しました。

ネットでも書籍でも、当たり前のこととされていて Maven プロジェクトで Spring MVC の Web アプリケーションを作成するための設定ってあまりまとまっていないのですよね。

この記事を書いたのは、Spring を始める人が最初にぶつかるであろう壁を突破するためです。Spring 初心者の方はぜひ参考にしてください。

この方法が分かったら、以下の書籍のサンプルコードの作成もできるようになると思います。

 

この書籍は Spring 入門書なのですが、この記事の基本的なことに触れていないので最初は苦戦すると思います。ですが、この問題をクリアしたらとてもよい書籍なので参考にしてみてください。

 

関連記事

 

 

 


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。

    現在、Enty で支援を受け付けています。もしよければご支援ください。



    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから