Fork me on GitHub

Programming Design Notes

Google App Engine (GAE) 使用 Spring 3 Web MVC

| Comments

此教學使用 Eclipse IDE 制作

Eclipse 在這裡下載
推薦下載 Eclipse IDE for Java EE Developers

要取得 Google App Engine plugin for Eclipse 可以到這裡下載

有一點要注意
Eclipse 預設是使用 JRE 而不是 JDK
我們要將 JRE 改為 JDK 才不會發生錯誤


沒有 JDK 的請到這裡下載
網址: http://java.sun.com/javase/downloads/index.jsp


Window -> Preferences -> Java -> Installed JREs -> Add -> Standard JVM
Java 預設安裝路徑 : C:\Program Files\Java
然後選擇 JDK 的資料夾
按下 Finish 後請緊記要選取剛剛加入的 JDK

設定完成了第一步當然要先開一個新的 Google App Engine project
選擇 File -> New -> Other -> Google -> Web Application Project

將會看見以下畫面




輸入 Project 名稱, Package 名稱

如果你不打算仲用 Google Web Toolkit 或根本不知這是什麼
請不要選取

然後到 http://www.springsource.com/download/community 下載最新的 Spring Freamwork 3
17-01-2010 最新版本是 Spring Framework 3.0.0.RELEASE 
下載完成解壓縮後
到 dist 資料夾將以下的檔案複製到 war/WEB-INF/lib

  1. org.springframework.aop-3.0.0.RELEASE.jar
  2. org.springframework.asm-3.0.0.RELEASE.jar
  3. org.springframework.beans-3.0.0.RELEASE.jar
  4. org.springframework.context.support-3.0.0.RELEASE.jar
  5. org.springframework.context-3.0.0.RELEASE.jar
  6. org.springframework.core-3.0.0.RELEASE.jar
  7. org.springframework.expression-3.0.0.RELEASE.jar
  8. org.springframework.orm-3.0.0.RELEASE.jar
  9. org.springframework.web.servlet-3.0.0.RELEASE.jar
  10. org.springframework.web-3.0.0.RELEASE.jar
然後到 http://commons.apache.org/downloads/download_logging.cgi 下載 common-logging.jar
17-01-2010 最新版本是 1.1
請將 commons-logging-1.1.1.jar 複製到  war/WEB-INF/lib
所需的檔案也齊了


選取 Project -> 滑鼠右鍵 -> Properties -> Java Build Path -> Library -> Add JARs…
選取 war/WEB-INF/lib 下所有 JAR 檔案

下一步修改 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>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.do</welcome-file>
</welcome-file-list>
</web-app>

在 war/WEB-INF 下新增一個 dispatcher-servlet.xml 檔案
輸入以下內容


<?xml version="1.0" encoding="UTF-8"?>
<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"
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">
<context:component-scan base-package="com.lokhkg.www.controller" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/views</value>
</property>
<property name="suffix">
<value>jsp</value>
</property>
</bean>
</beans>

在 base-package 處請輸入你的 Package 名稱

現在在 Package 新增一個 Java Class
名稱: IndexController.java
輸入以下內容


package gae.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping(value = "/index.do")
public class IndexController{
@RequestMapping
public String helloWorld(Model model){
model.addAttribute("message", "Hello World!");
return "index";
}
}

在 war/WEB-INF 新增一個 views 資料夾
在 views 資料夾內新增 index.jsp 檔案
輸入以下內容


<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Index</title>
</head>
<body>
<p>${message}</p>
</body>
</html>

現在可以測試一下了
選取 Project -> 按下滑鼠右鍵 -> Run As -> Web Application
如果出現 The server is running at http://localhost:8888/
而沒有其他錯誤
瀏覽器輸入網址: http://localhost:8888/
將會出現 Hello World!


檔案架構:




















完整範例: GAE.7z

相關書籍: Spring Recipes: A Problem-Solution Approach (Books for Professionals by Professionals)Spring in ActionBeginning Java Google App Engine