說明:這篇主要是介紹如何用 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
相關檔案下載
0 意見:
張貼留言