SAStruts開発環境をセットアップする
Super Agile Struts - Setupを見ながらセットアップしてみました。
セットアップしたのはブランクプロジェクトです(ここから膨らましていく予定...)
プロジェクトの雛形としてブランクプロジェクトが用意されています。ブランクプロジェクトは、サンプルのアプリケーションがないことを除いては、チュートリアル用のプロジェクトと同じです。
Super Agile Struts - Setup
もろもろのダウンロード
Java SE Downloadsから、JDK 5.0 Update 14をダウンロードしました。
Apache Tomcat - Apache Tomcat 5 Downloadsから、apache-tomcat-5.5.26.zipをダウンロードしました。
Tomcatの設定
ブランクプロジェクトを D:\eclipse-workspace\sa-struts-blank に、Tomcat本体は D:\tomcat\apache-tomcat-5.5.26 に配置しました。
<Context path="/sa-struts-blank" reloadable="false" docBase="D:\eclipse-workspace\sa-struts-blank\webapp" workDir="D:\eclipse-workspace\sa-struts-blank\work" > <Logger className="org.apache.catalina.logger.SystemOutLogger" verbosity="4" timestamp="true"/> </Context>
http://sastruts.seasar.org/fileReference.html#serverを参照して設定を行います。
useBodyEncodingForURI属性、URIEncoding属性を追加します。
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8" />
Managerコンテキストの部分のコメントを削除します。
<!-- Uncomment this to disable session persistence across Tomcat restarts --> <Manager pathname="" />
welcome-file-list(デフォルトページ設定)を空にします。
<welcome-file-list> </welcome-file-list>
ルートパッケージを任意のものに変更します。ここではmorningmist7に。
<components> <component class="org.seasar.framework.convention.impl.NamingConventionImpl"> <initMethod name="addRootPackageName"> <arg>"morningmist7"</arg> </initMethod> </component> <component class="org.seasar.framework.convention.impl.PersistenceConventionImpl"/> </components>
Tomcat起動
TomcatプラグインからTomcatを起動してみます。以下はコンソールの抜粋です。
2008/02/25 15:48:16 org.apache.catalina.core.AprLifecycleListener lifecycleEvent 2008/02/25 15:48:16 org.apache.coyote.http11.Http11BaseProtocol init 情報: Coyote HTTP/1.1を http-8080 で初期化します 2008/02/25 15:48:16 org.apache.catalina.startup.Catalina load 情報: Initialization processed in 968 ms 2008/02/25 15:48:16 org.apache.catalina.core.StandardService start 情報: サービス Catalina を起動します 2008/02/25 15:48:16 org.apache.catalina.core.StandardEngine start 情報: Starting Servlet Engine: Apache Tomcat/5.5.26 2008/02/25 15:48:16 org.apache.catalina.core.StandardHost start 情報: XML検証は無効です INFO 2008-02-25 15:48:18,046 [main] Loading validation rules file from '/WEB-INF/validator-rules.xml' DEBUG 2008-02-25 15:48:18,609 [main] 環境変数#Envにファイル(env.txt)から値(ct)が設定されました DEBUG 2008-02-25 15:48:18,890 [main] S2Containerを作成します。path=hotdeploy.dicon ... WARN 2008-02-25 15:48:20,218 [main] org.seasar.extension.dbcp.impl.ConnectionPoolImplのプロパティ(XADataSource)が見つからないので設定をスキップします INFO 2008-02-25 15:48:20,750 [main] Running on [ENV]ct, [DEPLOY MODE]Hot Deploy 2008/02/25 15:48:20 org.apache.catalina.core.ApplicationContext log ... 2008/02/25 15:48:21 org.apache.jk.common.ChannelSocket init 情報: JK: ajp13 listening on /0.0.0.0:8009 2008/02/25 15:48:21 org.apache.jk.server.JkMain start 情報: Jk running ID=0 time=0/31 config=null 2008/02/25 15:48:21 org.apache.catalina.storeconfig.StoreLoader load 情報: Find registry server-registry.xml at classpath resource 2008/02/25 15:48:22 org.apache.catalina.startup.Catalina start 情報: Server startup in 5922 ms
簡単なコードを書いてみる
Hot Deployなので、Tomcatを終了・再起動することなく、コードを書き始めることができます。すご。。
入力されたメッセージを表示するだけのActionです。
package morningmist7.action; import org.seasar.struts.annotation.Execute; /** * 単純なメッセージの表示 * @author morningmist7 */ public class MessageAction { /** * メッセージ(publicフィールド対応なのでsetter/getter不要!) */ public String message; /** * デフォルトのアクションメソッドはindex() * @return 遷移先のjsp名 */ @Execute(validator = false) public String index() { return "message.jsp"; } }
html:textではなく普通のinputタグを使ってみました。id属性の付け方が分からなかったので...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>Message</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript"> // <![CDATA[ // ]]> </script> </head> <body> <html:errors/> <p> <s:form method="get" action="/message"> <p>入力:<input id="message" name="message" type="text" value="${message}" /></p> <p>出力:${f:h(message)}</p> <p><input type="submit" name="submit" value="更新"/></p> </s:form> </p> </body> </html>
さて、どのようなHTMLが出力されるのか?『あいうえお』を入力して更新ボタンを押した後、以下のようになります。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>Message</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript"> // <![CDATA[ // ]]> </script> </head> <body> <p> <form name="messageActionForm" method="get" action="/sa-struts-blank/message/"> <p>入力:<input id="message" name="message" type="text" value="あいうえお" /></p> <p>出力:あいうえお</p> <p><input type="submit" name="submit" value="更新"/></p> </form> </p> </body> </html>