在本教程中,我们将向您展示如何在Google App Engine( GAE )环境中开发和部署Spring 3.0 MVC REST Web应用程序。
使用的工具和技术:
- Google App Engine Java SDK 1.6.3.1
- 春天3.1.1
- JDK 1.6
- Eclipse 3.7 + Eclipse的Google插件
注意
此示例将重用此Spring 3 MVC REST示例 ,对其进行修改并与Google App Engine集成,您可能还想阅读该示例 – GAE + Java + Eclipse示例
1.新的Web应用程序项目
在Eclipse中,创建一个名为“ SpringMVCGoogleAppEngine ”的新Web应用程序项目。
“ Eclipse的Google插件 ”将生成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
- 弹簧上下文支持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 ”按钮,然后选择上方的jars。
3.弹簧控制器
3.1删除自动生成的SpringMVCGoogleAppEngineServlet.java
,您不需要这样做。
3.2创建一个bean,在REST结构中充当控制器。 另外,将一条消息放入DI的“ message
”属性中。
文件: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
页面,显示结果。
文件: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并查看解析器。
文件: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框架。
文件: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应用程序 ”运行。
网址:http:// localhost:8888 / movie / Avengers
9.在GAE上部署
更新appengine-web.xml
文件,添加您的App Engine应用程序ID。
文件: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图标“ Deploy to App Engine ”。
网址:http://mkyong-springmvc.appspot.com/movie/forrest%20gump
下载源代码
由于文件较大,因此不包括所有Spring和GAE jar。
下载– SpringMVC-GoogleAppEngine.zip (12 KB)
参考文献
- Spring 3.0 bean参考
- REST解释了维基百科
- Google App Engine + Java + Google Eclipse插件示例
- Spring 3 MVC你好世界示例
- Spring 3 REST Hello世界示例
- Google Add Engine Java文档
翻译自: https://mkyong.com/google-app-engine/google-app-engine-spring-3-mvc-rest-example/