SAStruts開発環境をセットアップする

Super Agile Struts - Setupを見ながらセットアップしてみました。

セットアップしたのはブランクプロジェクトです(ここから膨らましていく予定...)

sa-struts-blank-1.0.0.zip

プロジェクトの雛形としてブランクプロジェクトが用意されています。ブランクプロジェクトは、サンプルのアプリケーションがないことを除いては、チュートリアル用のプロジェクトと同じです。

Super Agile Struts - Setup

もろもろのダウンロード

Java SE Downloadsから、JDK 5.0 Update 14をダウンロードしました。

Apache Tomcat - Apache Tomcat 5 Downloadsから、apache-tomcat-5.5.26.zipをダウンロードしました。


3.2を使っています。



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>
  • D:\eclipse-workspace\sa-struts-blank\src\main\resources\convention.dicon

ルートパッケージを任意のものに変更します。ここでは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>

TODO

以下の3つのファイルはひとことでいうと何を設定するファイルなのでしょう?要調査。

  • convention.dicon
  • creator.dicon
  • customizer.dicon