Eclipse を使用して SpringMVC で簡単なサンプルを作成する。勉強のため Spring bootは使用しない。
各種バージョンは次のとおり。
OS : Windows7 64bit
Java : JDK1.8
Eclipse : 4.6(neon)
Spring : 4.3.2
Project の作成
Project エクスプローラで空白部分を右クリック → New → Other を選択してNew画面を出す。
Spring フォルダにある Spring Legacy Project を選択して Next ボタンクリック。
New Spring Legacy Project 画面が表示される。 Project name に適当に Sample とか入れて、Templats に Spring MVC Project を選択する。
次の画面でトップレベルのパッケージを指定する。ここでは org.yyama.sample とした。
Finish を押すとプロジェクトが作成される。
フォルダ構成。
C:. │ .classpath │ .project │ .springBeans │ pom.xml │ ├─.settings │ org.eclipse.jdt.core.prefs │ org.eclipse.m2e.core.prefs │ org.eclipse.wst.common.component │ org.eclipse.wst.common.project.facet.core.xml │ org.eclipse.wst.validation.prefs │ org.springframework.ide.eclipse.beans.core.prefs │ org.springframework.ide.eclipse.core.prefs │ ├─src │ ├─main │ │ ├─java │ │ │ └─org │ │ │ └─yyama │ │ │ └─sample │ │ │ HomeController.java │ │ │ │ │ ├─resources │ │ │ │ log4j.xml │ │ │ │ │ │ │ └─META-INF │ │ └─webapp │ │ ├─resources │ │ └─WEB-INF │ │ │ web.xml │ │ │ │ │ ├─classes │ │ ├─spring │ │ │ │ root-context.xml │ │ │ │ │ │ │ └─appServlet │ │ │ servlet-context.xml │ │ │ │ │ └─views │ │ home.jsp │ │ │ └─test │ ├─java │ │ └─org │ │ └─yyama │ │ └─sample │ └─resources │ log4j.xml │ └─target ├─classes │ │ log4j.xml │ │ │ └─org │ └─yyama │ └─sample │ HomeController.class │ ├─m2e-wtp │ └─web-resources │ └─META-INF │ │ MANIFEST.MF │ │ │ └─maven │ └─org.yyama │ └─sample │ pom.properties │ pom.xml │ └─test-classes │ log4j.xml │ └─org └─yyama └─sample
Pom.xml のソフトウェアのバージョンを編集する
デフォルトでは一昔前のバージョンが指定されているので、2016 年 8 月 20 日時点の最新バージョンに修正する。
修正前(修正箇所抜粋)
<properties> <java-version>1.6</java-version> <org.springframework-version>3.1.1.RELEASE</org.springframework-version> <org.aspectj-version>1.6.10</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> </properties>
修正後(修正箇所抜粋)
<properties> <java-version>1.8</java-version> <org.springframework-version>4.3.2.RELEASE</org.springframework-version> <org.aspectj-version>1.8.9</org.aspectj-version> <org.slf4j-version>1.7.21</org.slf4j-version> </properties>
Tomcat サーバーに追加する
プロジェクトができたので、Eclipse の Tomcat 上で動かせるように設定する。
Servers ウィンドウに表示されている Tomcat を右クリックして Add and Remove をクリック。
Add And Remove 画面が表示される。
Sample を右側のリストに Add して Finish を選択する。
実行する
Servers ウィンドウの Tomcat サーバーを右クリックして Start を選択する。
起動に成功すると次のようなメッセージが表示される。
8 20, 2016 1:18:16 午後 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Sample' did not find a matching property. 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: Server version: Apache Tomcat/9.0.0.M9 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: Server built: Jul 4 2016 18:22:47 UTC 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: Server number: 9.0.0.0 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: OS Name: Windows 7 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: OS Version: 6.1 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: Architecture: amd64 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: Java Home: C:\Program Files\Java\jre1.8.0_101 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: JVM Version: 1.8.0_101-b13 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: JVM Vendor: Oracle Corporation 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: CATALINA_BASE: C:\opt\Eclipse\workspaces\workspace1\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: CATALINA_HOME: C:\opt\tomcat\apache-tomcat-9.0.0.M9 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: Command line argument: -Dcatalina.base=C:\opt\Eclipse\workspaces\workspace1\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: Command line argument: -Dcatalina.home=C:\opt\tomcat\apache-tomcat-9.0.0.M9 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: Command line argument: -Dwtp.deploy=C:\opt\Eclipse\workspaces\workspace1\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: Command line argument: -Djava.endorsed.dirs=C:\opt\tomcat\apache-tomcat-9.0.0.M9\endorsed 8 20, 2016 1:18:16 午後 org.apache.catalina.startup.VersionLoggerListener log 情報: Command line argument: -Dfile.encoding=utf-8 8 20, 2016 1:18:16 午後 org.apache.catalina.core.AprLifecycleListener lifecycleEvent 情報: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.8.0_101\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_101/bin/server;C:/Program Files/Java/jre1.8.0_101/bin;C:/Program Files/Java/jre1.8.0_101/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\opt\Eclipse;;. 8 20, 2016 1:18:16 午後 org.apache.coyote.AbstractProtocol init 情報: Initializing ProtocolHandler ["http-nio-8080"] 8 20, 2016 1:18:17 午後 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 情報: Using a shared selector for servlet write/read 8 20, 2016 1:18:17 午後 org.apache.coyote.AbstractProtocol init 情報: Initializing ProtocolHandler ["ajp-nio-8009"] 8 20, 2016 1:18:17 午後 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 情報: Using a shared selector for servlet write/read 8 20, 2016 1:18:17 午後 org.apache.catalina.startup.Catalina load 情報: Initialization processed in 1113 ms 8 20, 2016 1:18:17 午後 org.apache.catalina.core.StandardService startInternal 情報: サービス Catalina を起動します 8 20, 2016 1:18:17 午後 org.apache.catalina.core.StandardEngine startInternal 情報: Starting Servlet Engine: Apache Tomcat/9.0.0.M9 8 20, 2016 1:18:19 午後 org.apache.jasper.servlet.TldScanner scanJars 情報: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 8 20, 2016 1:18:19 午後 org.apache.catalina.core.ApplicationContext log 情報: No Spring WebApplicationInitializer types detected on classpath INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started 8 20, 2016 1:18:19 午後 org.apache.catalina.core.ApplicationContext log 情報: Initializing Spring root WebApplicationContext INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Sat Aug 20 13:18:19 JST 2016]; root of context hierarchy INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/spring/root-context.xml] INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 601 ms INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization started 8 20, 2016 1:18:20 午後 org.apache.catalina.core.ApplicationContext log 情報: Initializing Spring FrameworkServlet 'appServlet' INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing WebApplicationContext for namespace 'appServlet-servlet': startup date [Sat Aug 20 13:18:20 JST 2016]; parent: Root WebApplicationContext INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/spring/appServlet/servlet-context.xml] INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/],methods=[GET]}" onto public java.lang.String org.yyama.sample.HomeController.home(java.util.Locale,org.springframework.ui.Model) INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: WebApplicationContext for namespace 'appServlet-servlet': startup date [Sat Aug 20 13:18:20 JST 2016]; parent: Root WebApplicationContext INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: WebApplicationContext for namespace 'appServlet-servlet': startup date [Sat Aug 20 13:18:20 JST 2016]; parent: Root WebApplicationContext INFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0' INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization completed in 1522 ms 8 20, 2016 1:18:21 午後 org.apache.coyote.AbstractProtocol start 情報: Starting ProtocolHandler [http-nio-8080] 8 20, 2016 1:18:21 午後 org.apache.coyote.AbstractProtocol start 情報: Starting ProtocolHandler [ajp-nio-8009] 8 20, 2016 1:18:21 午後 org.apache.catalina.startup.Catalina start 情報: Server startup in 4436 ms
ブラウザを起動し URL に http://localhost:8080/sample を入力してみると。
無事起動できた。
原因不明のエラーで起動できない場合は以下の記事の内容を試してみる。
yyama1556.hateblo.jp
簡単なアンケートアプリも作ってみた。
yyama1556.hateblo.jp
以上。
Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発
- 作者: 株式会社NTTデータ
- 出版社/メーカー: 翔泳社
- 発売日: 2016/07/21
- メディア: 大型本
- この商品を含むブログ (1件) を見る
[改訂新版]Spring入門 ――Javaフレームワーク・より良い設計とアーキテクチャ
- 作者: 長谷川裕一,大野渉,土岐孝平
- 出版社/メーカー: 技術評論社
- 発売日: 2016/06/14
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2015/05/21
- メディア: Kindle版
- この商品を含むブログを見る