上一節課,我們講了如何配置開發環境,包括客房端flex開發環境,以及服務端java開發環境,並且編寫了一個客房端樣本程式helloworld,但遺憾的是,目前這一個helloworld不是動態。如果用戶端不能與服務端進行資料互動,那麼我感覺我的flex還沒有真正入門。
一,Google App項目目錄結構及配置說明
我審視了一下eclipse為我建立的gapp_flexblog項目,它包括以下目錄結構:
Guestbook/
src/
…Java source code…
META-INF/
…other configuration…
war/
…JSPs, images, data files…
WEB-INF/
…app configuration…
lib/
…JARs for libraries…
classes/
…compiled classes…
1,src下有我提定的sban.flexblog命名空間目錄,有一些*.java檔案,看樣子這裡是存放源檔案的。從名稱也可以看出。
2,src/META-INF/jdoconfig.xml是jdo設定檔,暫時還用不到它。
3,war是java web應用程式的一種標準打包格式,Google App Engine採用這種通用格式將應用程式布署到容器中。
3.1,war/lib目錄下放置jar檔案。jar是Java Archive File的縮寫,是一種java文檔,是編譯之後類庫集合。flex library project編譯之後產生的swc檔案,與此相仿。
3.2,war/WEB-INF用於放置一些設定檔。web.xml是web應用設定檔,用於定義Servlet與url的映射,首頁列表,過 濾器與安全約束條件等。
在web.xml中,以下片段用於定義一個servlet name到一個servlet class的映射:
<servlet>
<servlet-name>helloWorld</servlet-name>
<servlet-class>sban.flexblog.server.HelloWorldServlet</servlet-class>
</servlet>
而此時,如果我們再定義一個url到該servlet name的映射,訪問這個url,控制權便交由sban.flexblog.server.HelloWorldServlet處理:
<servlet>
<servlet-name>helloWorld</servlet-name>
<url-pattern>/gapp_flexblog/hello</url-pattern>
</servlet>
思考問題1:如果我們直接定義一個url到servlet class的映射,是否也可以?
二,動態hello world應用
在sban.flexblog.server下建立一個HelloWorldServlet類,代碼如下:
package sban.flexblog.server;
import java.io.IOException;
import javax.servlet.http.*;
public class HelloWorldServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
String[] name = req.getParameterValues("name");
resp.setContentType("text/plain");
resp.getWriter().println("Hi " + name[0] + ",Hello, world.");
}
}
這個類繼承於HttpServlet,覆蓋doGet方法,用於處理http get請求。讓它處理來自於/gapp_flexblog/hello的url,在web.xml添加如下配置片段:
<servlet>
<servlet-name>helloWorld</servlet-name>
<servlet-class>sban.flexblog.server.HelloWorldServlet</servlet-class>
</servlet>
…
<servlet-mapping>
<servlet-name>helloWorld</servlet-name>
<url-pattern>/gapp_flexblog/hello</url-pattern>
</servlet-mapping>
啟動gapp_flexblog項目,我們web server運行正常:
如果你安裝了curl,現在就可以用它測試HelloWorldServlet類是否工作正常,開啟cmd,輸入:
curl http://localhost:8080/gapp_flexblog/hello?name=sban
返回的結果如下: