このチュートリアルでは、Google App Engine(
GAE
)環境で
Spring 3.0 MVC REST
Webアプリケーションの開発とデプロイ方法を説明します。
使用されるツールと技術:
-
Google App Engine Java SDK 1.6.3.1
-
Spring 3.1.1
-
JDK 1.6
-
Eclipse 3.7 + Google Plugin for Eclipse
1.新しいWebアプリケーションプロジェクト
Eclipseで、 ”
SpringMVCGoogleAppEngine
“という名前の新しいWebアプリケーションプロジェクトを作成します。
「
Google Plugin for Eclipse
」では、GAEプロジェクト構造のサンプルが生成されます。
2. Spring 3.0の依存関係
GAEで
Spring MVC + REST
を使用するには、次のjarファイルが必要です
-
aopalliance-1.0.jar
-
commons-logging-1.1.1.jar
-
spring-aop-3.1.1.RELEASE.jar
-
spring-asm-3.1.1.RELEASE.jar
-
spring-beans-3.1.1.RELEASE.jar
-
spring-context-3.1.1.RELEASE.jar
-
spring-context-support-3.1.1.RELEASE.jar
-
spring-core-3.1.1.RELEASE.jar
-
spring-expression-3.1.1.RELEASE.jar
-
spring-web-3.1.1.RELEASE.jar
-
spring-webmvc-3.1.1.RELEASE.jar
”
war/WEB-INF/lib
“フォルダにコピーして入れてください。
それをあなたのプロジェクトのビルドパスにも追加してください – プロジェクトフォルダを右クリックし、 ”
Properties
“を選択してください。 ”
Java Build Path
” – > ”
Libraries
“タブを選択し、 ”
Add Jars
“ボタンをクリックし、上記のjarファイルを選択します。
、width = 629、高さ= 480]
3.スプリングコントローラ
3.1自動生成された `SpringMVCGoogleAppEngineServlet.java`を削除します。これは必要ありません。
3.2 Beanを作成し、REST構造でコントローラとして動作させます。さらに、 “message”プロパティにメッセージをDIします。
File:src/com/mkyong/MovieController.java
package com.mkyong.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/movie") public class MovieController { //DI via Spring String message; @RequestMapping(value="/{name}", method = RequestMethod.GET) public String getMovie(@PathVariable String name, ModelMap model) { model.addAttribute("movie", name); model.addAttribute("message", this.message); //return to jsp page, configured in mvc-dispatcher-servlet.xml, view resolver return "list"; } public void setMessage(String message) { this.message = message; } }
4. JSPページ
`list.jsp`ページを作成し、結果を表示します。
File:war/list.jsp
<html> <body> <h1>GAE + Spring 3 MVC REST example</h1> <h2>Movie : ${movie} , DI message : ${message}</h2> </body> </html>
5.春の設定
Spring XML Bean設定ファイルを作成し、Beanを定義し、リゾルバを表示します。
File:war/WEB-INF/mvc-dispatcher-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- Need DI a message into controller, so auto component scan is disabled, to avoid double create the movieController bean. Only controller need this hack. --> <context:component-scan base-package="com.mkyong.controller"> <context:exclude-filter type="regex" expression="com.mkyong.controller.Movie.** "/> </context:component-scan> <mvc:annotation-driven/> <!-- Bean to show you Di in GAE, via Spring, also init the MovieController --> <bean class="com.mkyong.controller.MovieController"> <property name="message"> <value>Hello World</value> </property> </bean> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/pages/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans>
6. web.xml
`web.xml`を更新し、Springフレームワークを統合します。
File:war/WEB-INF/web.xml
<?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app__2__5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app__2__5.xsd" version="2.5"> <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
7.ディレクトリ構造
最終的なディレクトリ構造を確認してください。
8.ローカルで実行する
プロジェクトを右クリックし、「
Web Application
」として実行します。
URL:http://localhost:8888/movie/Avengers
9. GAEに展開する
`appengine-web.xml`ファイルを更新し、あなたのApp EngineアプリケーションIDを追加してください。
File:war/WEB-INF/appengine-web.xml
<?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>mkyong-springmvc</application> <version>1</version> <system-properties> <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> </system-properties> </appengine-web-app>
プロジェクトを選択し、Googleのアイコン「
App Engineへのデプロイ
」をクリックします。
URL:http://mkyong-springmvc.appspot.com/movie/forrest%20gump
ソースコードをダウンロードする
ファイルサイズが大きいため、すべてのSpringおよびGAE jarは除外されます。
ダウンロード:
SpringMVC-GoogleAppEngine.zip
(12 KB)
参考文献
3.0豆参照]。
http://en.wikipedia.org/wiki/Representational
state
transfer[REST
ウィキペディアを説明します]。 link://google-app-engine/google-app-engine-hello-world-example-using-eclipse[Google
App Engine + Java + Google Plugin for Eclipseの例]。リンク://spring3/spring-3-mvc-hello-world-example/[Spring 3 MVC hello
世界の例]。リンク://spring-mvc/spring-3-rest-hello-world-example/[Spring 3 REST
こんにちは世界の例]。
https://developers.google.com/appengine/docs/java/overview
[Google Add
Engine Java doc]