Struts-2-struts-configuration
Struts 2-構成ファイル
この章では、 Struts 2 アプリケーションに必要な基本構成について説明します。 ここでは、 web.xml、struts.xml、strutsconfig.xml 、 struts.properties などのいくつかの重要な構成ファイルを使用して構成できるものを確認します。
率直に言って、 web.xml および struts.xml 構成ファイルを使用するだけで作業を開始できます(この2つのファイルを使用して例が機能する前の章で既に目撃したように)。 ただし、あなたの知識のために、他のファイルについても説明します。
web.xmlファイル
web.xml構成ファイルは、サーブレットコンテナによってHTTP要求の要素が処理される方法を決定するJ2EE構成ファイルです。 これは厳密にはStruts2構成ファイルではありませんが、Struts2が機能するように構成する必要があるファイルです。
前に説明したように、このファイルはWebアプリケーションのエントリポイントを提供します。 Struts2アプリケーションのエントリポイントは、デプロイメント記述子(web.xml)で定義されたフィルターになります。 したがって、web.xmlで_FilterDispatcher_クラスのエントリを定義します。 web.xmlファイルは、フォルダー WebContent/WEB-INF の下に作成する必要があります。
これは、テンプレートまたはテンプレートを生成するツール(EclipseやMaven2など)を使用せずに起動する場合に構成する必要がある最初の構成ファイルです。
以下は、最後の例で使用したweb.xmlファイルのコンテンツです。
<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns = "http://java.sun.com/xml/ns/javaee"
xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id = "WebApp_ID" version = "3.0">
<display-name>Struts 2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Struts 2フィルターを / 。action ではなく */ *にマップすることに注意してください。これは、すべてのURLがstrutsフィルターによって解析されることを意味します。 これについては、注釈の章で説明します。
Struts.xmlファイル
*struts.xml* ファイルには、アクションの開発時に変更する構成情報が含まれています。 このファイルは、_struts.devMode = false_およびプロパティファイルで定義されている他の設定など、アプリケーションのデフォルト設定をオーバーライドするために使用できます。 このファイルは、フォルダー *WEB-INF/classes* の下に作成できます。
前の章で説明したHello Worldの例で作成したstruts.xmlファイルを見てみましょう。
<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name = "struts.devMode" value = "true"/>
<package name = "helloworld" extends = "struts-default">
<action name = "hello"
class = "com.finddevguides.struts2.HelloWorldAction"
method = "execute">
<result name = "success">/HelloWorld.jsp</result>
</action>
<-- more actions can be listed here -->
</package>
<-- more packages can be listed here -->
</struts>
最初に注意することは DOCTYPE です。 すべてのstruts構成ファイルには、小さな例に示すように正しいdoctypeが必要です。 <struts>はルートタグ要素で、その下で<package>タグを使用してさまざまなパッケージを宣言します。 ここで、<パッケージ>を使用すると、構成を分離してモジュール化できます。 これは、大きなプロジェクトがあり、プロジェクトが異なるモジュールに分割されている場合に非常に便利です。
たとえば、プロジェクトにbusiness_application、customer_application、staff_applicationの3つのドメインがある場合、3つのパッケージを作成し、関連するアクションを適切なパッケージに保存できます。
パッケージタグには次の属性があります-
Sr.No | Attribute & Description |
---|---|
1 |
name (required) パッケージの一意の識別子 |
2 |
extends このパッケージはどのパッケージから拡張されますか? デフォルトでは、struts-defaultを基本パッケージとして使用します。 |
3 |
abstract trueとマークされている場合、パッケージはエンドユーザーが使用できません。 |
4 |
namespace アクションの一意の名前空間 |
*constant* タグとnameおよびvalue属性を使用して、 *struts.devMode* プロパティを設定したように、 *default.properties* で定義された以下のプロパティをオーバーライドする必要があります。 *struts.devMode* プロパティを設定すると、ログファイルでより多くのデバッグメッセージを表示できます。
アクセスするすべてのURLに対応する action タグを定義し、対応するURLにアクセスするたびにアクセスされるexecute()メソッドでクラスを定義します。
結果は、アクションの実行後にブラウザに返されるものを決定します。 アクションから返される文字列は、結果の名前でなければなりません。 結果は、上記のようにアクションごとに、または「グローバル」結果として構成され、パッケージ内のすべてのアクションで使用できます。 結果には、オプションの name および type 属性があります。 デフォルトの名前の値は「成功」です。
Struts.xmlファイルは時間とともに大きくなる可能性があるため、パッケージで分割することはモジュール化の1つの方法ですが、 Struts はstruts.xmlファイルをモジュール化する別の方法を提供します。 ファイルを複数のxmlファイルに分割し、次の方法でインポートできます。
<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="my-struts1.xml"/>
<include file="my-struts2.xml"/>
</struts>
取り上げていない他の構成ファイルはstruts-default.xmlです。 このファイルにはStrutsの標準構成設定が含まれており、プロジェクトの99.99%でこれらの設定を変更する必要はありません。 このため、このファイルについてはあまり詳しく説明しません。 興味がある場合は、struts2-core-2.2.3.jarファイルにある default.properties ファイルをご覧ください。
Struts-config.xmlファイル
struts-config.xml構成ファイルは、WebクライアントのViewコンポーネントとModelコンポーネント間のリンクですが、プロジェクトの99.99%でこれらの設定を変更する必要はありません。
構成ファイルは、基本的に次の主要な要素が含まれています-
Sr.No | Interceptor & Description |
---|---|
1 |
struts-config これは、構成ファイルのルートノードです。 |
2 |
form-beans これは、ActionFormサブクラスを名前にマップする場所です。 この名前は、残りのstrutsconfig.xmlファイル全体、さらにはJSPページでもActionFormのエイリアスとして使用します。 |
3 |
global forwards このセクションは、webappのページを名前にマップします。 この名前を使用して、実際のページを参照できます。 これにより、WebページでURLをハードコーディングする必要がなくなります。 |
4 |
action-mappings ここでフォームハンドラを宣言します。これらはアクションマッピングとも呼ばれます。 |
5 |
controller このセクションでは、Struts内部を構成し、実際の状況ではめったに使用しません。 |
6 |
plug-in このセクションは、プロンプトとエラーメッセージを含むプロパティファイルの場所をStrutsに指示します。 |
次に、サンプルのstruts-config.xmlファイルを示します-
<?xml version = "1.0" Encoding = "ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
<struts-config>
<!-- ========== Form Bean Definitions ============ -->
<form-beans>
<form-bean name = "login" type = "test.struts.LoginForm"/>
</form-beans>
<!-- ========== Global Forward Definitions ========= -->
<global-forwards>
</global-forwards>
<!-- ========== Action Mapping Definitions ======== -->
<action-mappings>
<action
path = "/login"
type = "test.struts.LoginAction" >
<forward name = "valid" path = "/jsp/MainMenu.jsp"/>
<forward name = "invalid" path = "/jsp/LoginView.jsp"/>
</action>
</action-mappings>
<!-- ========== Controller Definitions ======== -->
<controller contentType = "text/html;charset = UTF-8"
debug = "3" maxFileSize = "1.618M" locale = "true" nocache = "true"/>
</struts-config>
struts-config.xmlファイルの詳細については、Strutsのドキュメントをご確認ください。
Struts.propertiesファイル
この構成ファイルは、フレームワークのデフォルトの動作を変更するメカニズムを提供します。 実際、 struts.properties 構成ファイルに含まれるすべてのプロパティは、 init.param を使用して web.xml で構成することも、 struts.xml 構成ファイルで定数タグを使用して構成することもできます。 しかし、物事を分離し、よりストラット固有に保ちたい場合は、 WEB-INF/classes フォルダーの下にこのファイルを作成できます。
このファイルで構成された値は、struts2-core-x.y.z.jarディストリビューションに含まれている default.properties で構成されたデフォルト値をオーバーライドします。 struts.properties ファイルを使用して変更を検討する可能性のあるプロパティがいくつかあります-
### When set to true, Struts will act much more friendly for developers
struts.devMode = true
### Enables reloading of internationalization files
struts.i18n.reload = true
### Enables reloading of XML configuration files
struts.configuration.xml.reload = true
### Sets the port that the server is run on
struts.url.http.port = 8080
ここでは、 hash (#)で始まる行はコメントと見なされ、 Struts 2 によって無視されます。