JBoss-IDE 1.2.2 簡介 (Struts) 3:
步驟:
6. 接著我們要在 project 的配置文檔中加上 Struts 的配置, 因為這不是跟 XDoclet 的設定, 所以我們要人手做一次, 不過還好只需一次. 首先我們將爆開 ‘struts-validator.war’ 後的資料夾裏 \WEB-INF\ 的所有檔案, (除了入面的資料夾, ‘web.xml’, ‘validation.xml’ 和 ‘struts-config.xml’), 全部複製在 tutorial\src\WEB-INF\ 的資料夾裏. 再要在 tutorial\src\WEB-INF\ 裏新增四個 xml 檔案, ‘servlets.xml ‘, ‘servlet-mappings.xml’, ‘taglibs.xml’ 和 ‘struts-plugins.xml’:
l servlets.xml 文檔內容如下:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
l servlet-mapping.xml 文檔內容如下:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
l taglibs.xml 文檔內容如下
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
l struts-plugins.xml 文檔內容如下
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>
跟著要在 JBoss-IDE 中加上 XDoclet 的設定, 右擊 tutorial project -> ‘Properties’ -> ‘XDoclet Configurations’ 中選 ‘mergeDir’ = ‘src/WEB-INF’, 再在 ‘XDoclet Configurations’ -> ‘Web’ -> ‘webdoclet’, 右擊 ‘Add’ -> ‘strutsconfigxml’ (選 version=1.1), 再 Add ‘strutsvalidationxml’ (不用選任何選項), 再 Add ‘fileset’, 選 ‘dir’ = ‘src’, 選 ‘includes’ = ‘**/*Form.java’, 再 Add ‘fileset’, 選 ‘dir’ = ‘src’, 選 ‘includes’ = ‘**/*Action.java’, 如下圖:
7 做完以上痛苦的步驟之後, 可以 run XDoclet 了, 右擊 tutorial project -> ‘Run XDoclet’, 如成功運行後可看到 ‘web.xml’ 裏有 ‘servlets.xml’, ‘taglibs.xml’ 和 ‘servlet-mappings.xml’ 的資料, 而 ‘struts-config.xml’ 裏有 ‘ComputeForm’, ‘ComputeAction’ 和 ‘struts-plugins.xml’ 的資料, 還會新增一個 ‘validation.xml’ 文檔, 這就証明是成功了!
8 現在是新增 ‘index.jsp’ 的時候了, 在 ‘docroot’ 下新增 ‘index.jsp’ 文檔, 詳細內容如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html><head><title>Fibonacci Application</title></head>
<body>
<h1>Fibonacci Form</h1>
<html:form action="computeFibo">
<table cellspacing="2" cellpadding="2" border="0">
<tr><td>Limit :</td>
<td><html:text property="num" size="5" maxlength="2"/></td>
</tr>
<tr>
<td><html:submit property="submit"/></td>
<td><html:reset/></td>
</tr>
</table>
</html:form>
</body>
</html>
為了簡化程式, 我沒有顯示輸入錯誤的訊息, 當輸入出錯時(沒有輸入或輸入的不是數字), 程式只會再回到 index.jsp.
9 現在我們可以試試運行了, 先 build project -> run XDcolet -> run Packaging -> Deploy ‘FiboApp.ear’ to JBoss, 在
browser 輸入 ‘http://127.0.0.1:8080/fibo/index.jsp’, 再輸入 ‘15’, 便可看到以下結果, 和 JBoss-IDE 教程裏的例子是一樣的, 不過裏面已用了 Struts 的功能.
後記:
這個例子花了我差不多兩天的時間, 當中有時候 XDoclet 會產生不到 struts-config.xml 裏的 form bean 配置資料, 後來要刪除 struts-config.xml 再行一次 XDoclet 才解決問題. 而當我行多幾次 XDoclet 時, eclipse 會出現 memory 不夠的警告, 因為 JBoss-IDE 同時行了 eclipse 和 JBoss, 處理期間不是太穩定, 不知道 eclipse 3.0 有沒有改善. 好了, 下次有時間我會寫寫如何在 JBoss-IDE 裏用 Hibernate, 或可能翻譯一些 JBoss-IDE 文檔. 最後, 本篇篇幅長了小小, 可能有很多地方出錯或遺漏, 希望大家可以指正及多給意見, 謝謝!
參考資料:
http://www.jboss.org