S-JIS[2005-08-07/2009-12-05] 変更履歴

Struts

ストラッツは、JavaのHTTPサーブレットを隠蔽したフレームワーク。
TomcatWebLogic等のサーブレットコンテナと共に使用する。

Strutsのドキュメント

概要

サーブレットをそのまま使ってもWebアプリは作れるが、リクエスト受付・処理・結果(HTML)を返す、といった手順を明確に定めたものがフレームワーク。Strutsもそういったフレームワークのひとつ。

  1. ApacheをWebサーバーとしてHTTPリクエストを受け付け、
  2. サーブレットコンテナであるAPサーバーTomcatWebLogic)に渡し、
  3. その上で稼動しているStrutsによって実際の処理を行う

という組み合わせで使うことが多い。
Apacheを使わずにTomcatで直接要求を受け付けることも出来るが、Apacheの方がSSLに対応していたりして高機能らしい。


Strutsは、いわゆるMVC(model-view-controller)モデルに基づいている。

webブラウザ アクション サーブレット    
  1. アクション・フォームBeanが登録されていれば、そこに値をセットする
 (フォームの情報を確認して、エラーチェックする)
       
webブラウザ   2. 1の結果に応じて、アクションクラス(controller)を呼び出す。
3. EJB(model)
データを返す  
4. フォワード(JSPの整形を)する。(view)    

どのアクションクラス・どのJSPが呼ばれるかについては、Strutsの設定ファイル(struts-config.xml)で指定する。


インストール

アーカイブはApache Strutsダウンロードページからダウンロードする。[2009-10-09]


RedHat LinuxにTomcat4と共にインストールする場合。[2005-08-07]

  1. まずはTomcatをインストールしておく。
  2. Strutsのアーカイブjakarta-struts〜.tar.gz解凍展開する。
  3. 出来たファイル群(jakarta-struts〜/webapps/*)を/usr/local/tomcat/webapps/にコピーする。
  4. 同様にjakarta-struts〜/lib/struts.jarを/usr/local/tomcat/libにコピーする。
  5. 環境変数CLASSPATHに $CATALINA_HOME/lib/struts.jar を追加する。
  6. Tomcatを再起動(終了・起動)する。
  7. http://ホスト名:8080/struts-example/ でindex.jsp が表示されればOK。

Struts1.3.10の場合。[2009-10-09]

  1. Strutsのアーカイブをダウンロードしてくる。
  2. struts-1.3.10-lib.zipを解凍し、jarファイルをWebアプリのlibの下にコピーする。
  3. struts-1.3.10-src.zipを解凍し、struts-1.3.10/src/taglib/src/main/resources/META-INF/tldの下にあるtldファイルをWebアプリのtld置き場にコピーする。

なお、lib(jarファイル)にはcommons-beanutilsとかcommons-fileuploadとかも入っているので、別途インストールしようとしているなら、バージョンに注意。


設定

説明 ファイル 備考
war *.war Webアーカイブ。zipと同じ形式らしい。webappsの下に置いておくと、J2EEサーバーによって自動的に展開される。
tld *.tld タグライブラリディスクリプタ。XMLで記述されている。
WEB-INF WEB-INF このディレクトリは、URLで指定しても見られない。なので、この下に設定ファイル等を置く。
  WEB-INF/web.xml このディレクトリ配下の動作を規定する。サンプルのコピーで一応は充分。
  WEB-INF/struts-config.xml 設定ファイル。(クライアントでボタンをクリックして)HTTPリクエストが来た時の動作を規定する。
  • どのプロパティファイル(java.util.Propertyクラス)を使用するか
  • どのフォームクラスにデータを入れるか
  • どのアクションクラスを使用するか
  • アクションクラスを実行した後、どのファイル(jsp)を展開するか(あるいはどのアクションを実行するか)
  WEB-INF/lib *.jarを格納する。struts.jarやjdbc*等。
  WEB-INF/classes struts以外のクラス(*.class)。EJBやJSP用もここに格納する。

web.xml

<web-app>
〜
	<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>
	</servlet>

	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		〜
	</welcome-file-list>
</web-app>

Strutsでは、基本的に、末尾に「.do」が付いたURLを用いる。(ファイルが存在するわけじゃないので、厳密にはURLではなくURIだけど)
そのURIがリクエストされると、actionで指定されたActionServletが実行される。
これはstruts-config.xmlを参照して処理を行う。

struts-config.xml

<action path="/login"					←http://ホスト名:8080/コンテキストID/login
	type="org.apache.struts.webapp.example.Login">	←実行するクラスをパッケージ付きで指定
	<forward name="success" path="main/gamen1.jsp" />	コンテキストID/main/gamen1.jsp
	<forward name="error"   path="main/error.jsp"  />	コンテキストID/main/error.jsp
</action>					参考:WEB-INFの場所は、コンテキストID/WEB-INF/

http://ホスト名:8080/コンテキストID/loginへの処理が要求されると
org.apache.struts.webapp.example.Loginクラスが実行され、その結果に応じて
http://ホスト名:8080/main/gamen1.jsphttp://ホスト名:8080/main/error.jspが表示される。


参考


技術メモへ戻る / JSPへ戻る
メールの送信先:ひしだま