🪡

struts2の基本構成ファイル

2024/03/29に公開

最初に

Struts 2アプリケーションに必要な基本構成をまとめまします。
ここでは、web.xml、struts.xml、strutsconfig.xml、struts.propertiesのようないくつかの重要な構成ファイルを使用して何を構成できるのかを見てみます。

web.xml

web.xmlファイルは厳密にはStruts2構成ファイルではありませんが、Struts2が動作するためには構成する必要があるファイルです。サブレットコンテナでHTTP要求要素を処理する方法を決定するJ2EE構成ファイルです。
このファイルは任意の Web アプリケーションのエントリポイントを提供します。Struts2アプリケーションのエントリポイントは、展開記述子(web.xml)で定義されたフィルタになります。

テンプレートやツールを使用せずに開始する場合は、Eclipse や Maven2 などの設定ファイルを最初に設定する必要があります。

<?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 フィルタを /* にマッピングし、すべての URL が struts フィルタによって解析されることを意味する /*.action にマッピングしないことに注意してください。

Struts.xml

struts.xml ファイルには、アクションの展開時に変更する設定情報が含まれています。
このファイルを使用して、アプリケーションのデフォルト設定を上書きできます。
たとえば、struts.devMode = false などのプロパティファイルで定義されているその他の設定です。このファイルは、WEB-INF/classes フォルダの下に作成できます。

<?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.tutorialspoint.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>

すべての struts 設定ファイルには、正しい DOCTYPEがが必要です。 <struts> はルートタグ要素であり、その下で<package>タグを使用して異なるパッケージを宣言します。 ここで <package> を使用すると、設定の分離とモジュール化が可能になります。 これは、大規模なプロジェクトがあり、プロジェクトが異なるモジュールに分割されている場合に非常に便利です。

たとえば、プロジェクトに business_application、customer_application、staff_application の 3 つのドメインがある場合、3 つのパッケージを作成し、関連するアクションを適切なパッケージに保存できます。

パッケージタグには、次の属性があります

Sr.No アトリビュート&説明
1 名前(required)
パッケージの一意の識別子
2 伸びる
このパッケージはどのパッケージから拡張されますか? デフォルトでは、基本パッケージとして struts-default を使用します。
3 抽象的な
true とマークされている場合、パッケージはエンド ユーザの消費に使用できません。
4 名前空間
アクションの一意の名前空間

struts.devModeプロパティを設定しただけのように、default.propertiesで定義されている次のプロパティのいずれかを上書きするには、name -アトリビュートとvalueアトリビュートとともにconstantタグを使用する必要があります。struts.devModeプロパティを設定するとログファイルにデバッグメッセージが表示されます。

アクションタグは、アクセスしたいすべてのURLに対応し、execute()メソッドを持つクラスを定義します。このメソッドは、対応するURLにアクセスするたびにアクセスされます。

結果は、アクションの実行後にブラウザに返される内容を決定します。 アクションから返される文字列は、結果の名前である必要があります。 結果は、上記のようにアクションごとに、またはパッケージ内のすべてのアクションで使用できる「グローバル」な結果として設定されます。 結果には、オプションの名前とタイプ属性があります。 デフォルトの名前値は「success」です。

Struts.xml ファイルは時間の経過とともに大きくなる可能性があるため、パッケージごとにファイルを分割することもモジュール化する方法の 1 つですが、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 ClientのViewコンポーネントと Modelコンポーネント間のリンクですが、99.99% のプロジェクトでこれらの設定に触れる必要はありません。

Sr. インターセプターなし & 説明
1 struts-config
これは、コンフィギュレーション ファイルのルート ノードです。
2 form-beans
ここで、ActionForm サブクラスを名前にマッピングします。 この名前は、残りの strutsconfig.xml ファイル全体、さらには JSP ページ全体で ActionForm のエイリアスとして使用します。
3 global forwards
このセクションでは、Web アプリケーション上のページを名前にマッピングします。 この名前を使用すると、実際のページを参照できます。 これにより、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>

The 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

ハッシュ(#)で始まる行はコメントとして想定され、Struts2では無視されます。

Discussion