xdoclet-bin-1.2.2.zipをダウンロードして展開します。
C;\eclipseに展開します。
C:\eclipse\xdoclet-1.2.2\lib以下のjarファイルを全て通します。
一つの処理に対して一つのActionを作る。
/* * Copyright(c)2004-2005 **********. All Rights Reserved. */ package ****.****.****; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * ****Action. * @struts.action * name="****Form" このActionで使われるActionForm名 * path="/****Action" このActionをマッピングするURL * scope="request" このActionのインスタンスの寿命 * input="/validation-err.jsp" Validation Errorになったときの飛び先(呼び元にする場合が多い) * validate="true" Validationを行う * @struts.action-forward * name="success" 返値がsuccessの時の飛び先 * path="/pages/****.jsp" * @struts.action-forward * name="fail" 返値がfailの時の飛び先 * path="/failAction.do" * @struts.action-exception 例外発生時の飛び先 * type="java.lang.NullPointerException" 発生した例外 * key="errors.invalid" application.propertiesのキー値(必須項目) * path="/pages/nullpo.jsp" 飛び先のURI * @struts.action-exception * type="java.lang.SQLException" * key="errors.sqlerr" * handler="com.foo.sqlex-handler" ExceptionHandler(※後述) * path="/pages/sqlerr.jsp" * @author * @version $Id$ */ public class ****Action extends Action { /** * jakarta-commons-logging */ private static Log logger = LogFactory.getLog(****Action.class); /** * execute. * @param map ACTION MAP * @param actionForm FORM * @param req HTTP REQUEST * @param res HTTP RESPONSE * @return ACTION FORWARD * @throws java.lang.Exception EXCEPTION */ public ActionForward execute( ActionMapping map, ActionForm actionForm, HttpServletRequest req, HttpServletResponse res) throws Exception { logger.trace("Start"); ****Form fm = (****Form)actionForm; logger.trace("End"); return map.findForward("success"); } }
Struts-Controller?を参照
struts-config.xml中の静的項目は、別ファイルに書いておきant実行時にマージする。
マージファイルを置く場所に関してはAntタスク雛型集#struts?を参照。
マージファイル名 | struts-config.xmlへの統合先 | 利用 | 説明 |
struts-data-sources.xml | <data-sources> | × | データソース定義。EJBコンテナ/Tomcatのデータソースを使うので通常は使うことはない |
struts-forms.xml | <form-beans> | × | XDocletが生成するForm以外の定義。通常使うことはない |
global-exceptions.xml | <global-exception> | ○ | 共通的な例外処理。社内システムならこれ一本で良いかも… |
global-forwards.xml | <global-forwards> | × | 共通的なAction/JSPとURLのマッピング。StrutsBlank?.warでも使われている。中規模以上のそろそろ仕様書が必要になってくるアプリからは使いたくねぇーな |
struts-actions.xml | <action-mappings> | × | 独自にActionMapping?クラスを作るとき。通常使うことはない |
struts-controller.xml | <controller> | ○ | Strutsのフィルタ処理、役割はServletのフィルタと同じ。Strutsのみを使うならこれを使う |
struts-message-resources.xml | <message-resources> | ○ | 必須。JSPからapplication.propertis を参照することを宣言 |
struts-plugins.xml | <plug-in> | ○ | 必須。Validator pluginはたいていのアプリで使うので |
<global-exceptions> <exception type="java.lang.Error" key="message.fatal" path="/pages/fatal-error.jsp" /> <exception type="java.lang.RuntimeException" key="message.pgerr" handler="com.foo.PgerrHandler" path="/pages/program-error.jsp" /> </global-exceptions>
<controller processorClass="com.foo.CharsetSetterProcessor"/> <controller processorClass="com.foo.Log4jNDSSetterProcessor"/>Actionが動く前のフィルタ処理を行うクラスを設定します。
<message-resources parameter="resoureces.application" />上のように定義すると、クラスパス上の resources/application.properties が利用される。