2008年8月29日 星期五

Eclipse Plugin Alveole Studio MVC Web Project 寫 Struts 2 應用程式

推文
使用 Eclipse Plugin Alveole Studio MVC Web Project 寫 Struts 2 應用程式
說明:這篇主要是介紹如何用 Eclipse plugin Alveole寫 Struts2 應用程
式,功能是查詢員工的薪資資料。

1. Eclipse 及 Tomcat 下載以及環境設定,請參考我底下的這篇文章
Eclipse 寫 java Servlet。

2. 打開 Eclipse 選 HelpSoftware Updates 如下圖



按 Add Site 鈕,輸入網址 http://mvcwebproject.sourceforge.net/update/
Eclipse 3.4 Java EE Developers版,只需下載及安裝
Alveole Studio Struts 2 Editor Feature 0.23版
MVCWebProjectHelpFeature Feature 0.23版

3. 成功安裝後會有如下畫面


4. 選 Menu FileNewOther,建立 Dynamic Web Project 如下圖

按 Next

5. Project Name 輸入 amvctest,如下圖

按 Finish

6. 點選剛建立的 project amvctest 按右鍵 NewOther如下圖

如下圖選 Alveole Studio MVC Web Project

按 Next
選剛建立的 amvctest,File Name 輸入 amvc,如下圖

按 Next

按 Next
如下圖,它會 Enable Struts 2 跟 copy Struts 2 的 lib 到如圖那個目錄下

按 Finish

7. 選 amvc.aswp 點兩下,會有如下圖的編輯畫面

選右邊畫面元件 Package,這個元件就好像你流程的一個節點一樣,把它看
成一般目錄即可。

8. 如下圖,輸入 Label 輸入 search,因為我舉的例子跟底下我寫的這篇一樣,
手工打造 Struts2 應用程式,一進入首頁就是查詢畫面,所以我只設一個
節點,如果你查 Alveole Studio MVC Web Project 原網站的 Tutorial 它會有
三個 package,而且說明的很詳細,如果要進一步了解可到底下網址。
http://mvcwebproject.sourceforge.net/

按 OK

9. 我們先建立 java 程式,DataOBJ.java,ErrorMesg.java,Search.java,以及
jsp 程式 display.jsp,error.jsp,ser.jsp,我會附上,直接 copy 或 import 進
來即可,說明就參考這篇 手工打造 Struts2 應用程式 步驟 9 及 13,注意
ser.jsp 程式這行 <s:form action="Search" namespace="/"> 與上一篇多了
namespace。

10. 選右邊的 Edit,點兩下 package search,如下圖

如下圖,點右邊元件 Struts2

Nodel label 輸入 search,Action name 輸入 Search,Action class 選
test.Search,Action method 輸入 Search.java 的 execute,或留空白也可,按
OK。

11. 點右邊元件 Jsp View,如下圖

Label 輸入 search,Jsp Path 輸入 /display.jsp,按 OK。

12. 在點右邊元件 Link,到編輯畫面由 search 按住滑鼠左鍵拉到 search view,
如下圖,底下的畫面的 Link Name輸入 success

按 OK,重複步驟 11 建 error view(Label 輸入 error view ,Jsp Path 輸入
/error.jsp) 及 error Link如下圖


13. 我們在看一下 src 目錄下的 alveole-struts.xml的內容如下圖

剛編輯畫面所建立的流程圖建立了這樣的檔案內容

14. 在改檔案 struts.properties 內容編碼 struts.i18n.encoding=Big5,如下圖


15. web.xml 內容改成如下圖(我會附上檔案)


16. 執行及部署請參考這篇 手工打造 Struts2 應用程式 的步驟 14,15,16。

相關檔案下載

2008年8月28日 星期四

手工打造 Struts 2 應用程式

推文
說明:這篇主要是介紹如何用 Eclipse 寫 Struts 2 應用程式(未使用
Eclipse Struts2 plugin 工具),功能是查詢員工的薪資資料。

1. Eclipse 及 Tomcat 下載以及環境設定,請參考我底下的這篇文章
Eclipse 寫 java Servlet。

2. 請下載 Struts 2.0.11.2,網址如下:
http://apache.cdpa.nsysu.edu.tw/struts/binaries/struts-2.0.11.2-all.zip

3. 用 Eclipse 建立一個 Dynamic Web Project 如下圖

按 Next

4. Project Name 輸入 struts2test,如下圖

按 Finish

5. 將你步驟2下載的 struts-2.0.11.2-all.zip檔案解壓縮,在目錄struts-2.0.11.2\lib
底下,請將 commons-logging-1.0.4.jar,commons-logging-api-1.1.jar,
freemarker-2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.11.2.jar,xwork-2.0.5.jar,
以及 JDBC 的 driver(我的資料庫伺服器是 postgresql,請依你的資料庫下載
相關的 JDBC driver) postgresql-8.3-603.jdbc4.jar,複製到專案 struts2test 目錄
WebContent\WEB-INF\lib底下。

6. 如下圖

7. 在 struts2test project 的 src 底下建立 struts.xml 檔案,如下圖

struts.xml 檔案內容如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 底下這行主要是設定編碼,這樣在輸入查詢字串時才不會顯示亂碼 -->
<constant name="struts.i18n.encoding" value="Big5"></constant>
<package name="struts2test" extends="struts-default">
<!-- 底下這行主要是設定 Action class 處理成功或失敗顯示的jsp網頁-->
<action name="Search" class="test.Search">
<result>/display.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>

8. 而我們的 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"
id="WebApp_ID" version="2.5">

<display-name>struts2test</display-name>
<!-- 所有的 request response 藉由過濾器轉到 struts2 來處理 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class> org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 歡迎首頁 -->
<welcome-file-list>
<welcome-file>ser.jsp</welcome-file>
</welcome-file-list>

</web-app>

9. 在 WebContent 底下建立 ser.jsp,display.jsp,error.jsp 程式,如下圖



重覆這步驟建立 ser.jsp,display.jsp,error.jsp 檔,內容如下

10. ser.jsp 內容如下

<%@ page language="java" contentType="text/html; charset=BIG5"
pageEncoding="BIG5"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<!-- 底下這行宣告 s 開頭為使用 struts 的 tag -->
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>查詢</title>
</head>
<body>
<!-- 底下會產生一個 html 的 form 及 textfield(參數名稱為sertxt),button -->
<s:form action="Search">
<s:textfield label="輸入查詢" name="sertxt"></s:textfield>
<s:submit label="查詢" name="search" value="查詢"></s:submit>
</s:form>
</body>
</html>

11. display.jsp 內容如下

<%@ page language="java" contentType="text/html; charset=BIG5"
pageEncoding="BIG5"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>

</head>
<style>
.dataO {border:0px solid blue;border-collapse:collapse;}
.dataO th{ background-color:#ddd;color:#666;text-align:left;border:1px solid white;padding:5px;}
.dataO td{padding:5px;}
.dataO tr.odd {background-color:#fafbff;}
.dataO tr.even {background-color:#f4f4ff;}
</style>
<body>

<table class="dataO">
<tr>
<th>員編</th>
<th>姓名</th>
<th>部門</th>
<th>薪資</th>
</tr>

<!-- 底下這個標籤主要是透過回圈將 java.util.Collection 類別的物件內容取出,我在
這個例子用了 List(資料庫取出的內容) 及 Vector(針對 errorMessage),底下 value
的值 dataOBJs 是對應到程式 Search.java 裡的變數,id 的值為它的type DataOBJ -->
<s:iterator value="dataOBJs" id="DataOBJ" status="dataO_stat">
<tr class="<s:if test="#dataO_stat.odd ==
true">odd</s:if><s:else>even</s:else>">
<td><s:property value="員編" /></td>
<td><s:property value="姓名" /></td>
<td><s:property value="部門" /></td>
<td><s:property value="薪資" /></td>
</tr>
</s:iterator>
</table>

</body>
</html>

12. error.jsp 內容如下

<%@ page language="java" contentType="text/html; charset=BIG5"
pageEncoding="BIG5"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>錯誤訊息</title>
</head>
<body>
<s:iterator value="vecError" id="ErrorMesg">
錯誤訊息:<s:property value="errormessage" />
</s:iterator>
</body>
</html>

13. 至於 java 的檔案:
Search.java:Action class 主要負責連資料庫搜尋員工資料
DataOBJ.java:放入 List 的員工資料的物件
ErrorMesg.java:當有 exception 時,透過 error.jsp 秀出錯誤訊息
說明請參考附件程式內容
建立 java 程式,如下圖

重覆這步驟建立 DataOBJ.java,ErrorMesg.java,Search.java 檔
14. 執行 project struts2test 按右鍵 Run as  Run on Server 如下圖



輸入王,按查詢鈕,產生如下頁面


15. 還記得我們的 struts.xml 的設定
...
<action name="Search" class="test.Search">
<result>/display.jsp</result>
<result name="error">/error.jsp</result>
</action>
...
我們把資料庫伺服器關掉,試試 exception 時的情形,如下圖

16. 部署應用程式請參考這篇文章 Eclipse3.4+Tomcat6.0.16 寫 java Servlet 的
步驟 20。

參考網址:
http://struts.apache.org/2.x

http://www.roseindia.net

http://www.struts2.org

相關檔案下載