ストラッツは、JavaのHTTPサーブレットを隠蔽したフレームワーク。
TomcatやWebLogic等のサーブレットコンテナと共に使用する。
|
Strutsのドキュメント |
サーブレットをそのまま使ってもWebアプリは作れるが、リクエスト受付・処理・結果(HTML)を返す、といった手順を明確に定めたものがフレームワーク。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]
Struts1.3.10の場合。[2009-10-09]
なお、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リクエストが来た時の動作を規定する。
|
|
WEB-INF/lib | *.jarを格納する。struts.jarやjdbc*等。 | |
WEB-INF/classes | struts以外のクラス(*.class)。EJBやJSP用もここに格納する。 |
<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を参照して処理を行う。
<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.jspやhttp://ホスト名:8080/main/error.jspが表示される。