struts 2ウェブアプリケーション配置の詳細


1.まずいくつかのファイルを紹介します。①web.xml:WEB-INFの下にあります。自分で作成する必要があります。各webアプリケーションにはweb.xmlがあります。ウェブアプリケーションの本の取扱説明書のように、ウェブアプリケーションの使い方をサーバに教えます。②struts-default.xml:struts 2-core-2.XXX.jarのルートディレクトリの下にあります。struts 2のデフォルトの設定を定義しました。普通は修正しないでください。reult-type、スクリーンショット、struts-defaultというパッケージが含まれます。通常、各カバンはstruts-defauultパッケージを継承しなければなりません。struts 2の多くのコア機能はInterceptorによって実現され、Interceptorはstruts 2の基礎となり、struts-default.xmlにこれらのInterceptorが定義されています。stut-defaultを継承してこそstruts 2のコア機能が使えます。③struts-plugin.xml:struts 2-XX-pluin 2.X.XXX.jarのルートディレクトリの下にあります。普通は修正しないでください。プラグインで使用するファイルを設定します。それを使って特定の機能を簡単に入れることができます。これはstruts-defaultから引き継ぐpackageを定義しています。struts-pluin.xmlはstruts-default.xmlの補足です。④struts.xml:WEB-INF\clasesディレクトリの下にあります。主にページのアクセスを設定するためのパスです。通常は一つのpackageを定義し、struts-defaultから継承する必要があり、これによりstruts-defaultのすべての構成を持ち、これによってstruts.xmlの配置量が大幅に軽減される。⑤default.properties:struts 2-core-2.XXX.jarのorg.apphe.struts 2包の中にあります。これは属性ファイルで、設定情報をkey=value形式で保存して、struts 2で読みます。これはstruts 2フレームのデフォルトの構成を定義しています。struts 2によってあらかじめ定義されていますので、通常は修正しないでください。⑥struts.properties:あってもなくてもいいです。使う時は自分で作成します。strutsを設定するために使用することができます。例えば、struts.actions.extension属性は、アクセスactionのサフィックス名を指定するために使用されます。複数のサフィックス名の間には、struts.actions.extension=doを英語で区切っています。私たちはテクアクションのurlを訪問したいです。http://localhost:8080/webapp/TestAction.do またはhttp://localhost:8080/webapp/TestAction すべての設定情報はstruts.xmlで作成できます。

<constant name=”key” value=”value”/>
ロード順序default.properties->struts.xml-->struts.propertiesが3つのファイルに重複した属性がある場合、後にロードされるのは上書きされる前にロードされます。詳細なパラメータ構成を参照してください。http://candy-code.iteye.com/blog/1442335 2.一般的な構成手順①web.xmlは、Filter(フィルタ)の構成にあり、/*はウェブアプリのルートディレクトリにマッチするすべてのコンテンツ、すなわち、すべてのコンテンツをフィルタしてStruts PrepareAndExecuteFilterに処理してください。このようにしてこそ、本当にstruts 2を使うことができます。ここで注意したいのは2点です。1’struts 2.2.0.xから2.1.2バージョンのフィルタはFilter Disparchで、2.1.3バージョンのStruts PrepareAndExectFilterからFilter 2’に代わりました。urlにwelcomp-fileの名前だけ書いたら、訪問します。この時フィルタではフィルタされません。

	<?xml version="1.0" encoding="UTF-8"?>
 <web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
 </web-app>
②必要なクラスをWEB-INF\libに合格すると、strutsのフルバージョンのクラスは全部libディレクトリの下にあります。普通はすべてのクラスが必要ではありません。私たちはその中の一部だけを選ぶ必要がありますが、開発前にどのような種類のライブラリが必要なのかは確認できません。最も簡単な方法はstruts\appsのstruts 2-blank.warを解凍して、WEB-INF\libディレクトリの下のjar fileをすべてあなたのアプリケーションのlibディレクトリに拷問することです。これらは最も基本的に最もよく使われているクラスです。必要な基本ライブラリのファイルはあります。(バージョンによっては少し違っています。2.3.1.2バージョンを例にして)struts 2-core-2.ore-23.3.2.jar->struts 2コアクラスのxwork-core-23.12.jar    -->xworkコアクラスognl-3.4.jar   -->ONL表現クラスのcommon-to-2.2.10.jar->入出力freemarker-23.18.jar->freemarkerサポートクラスasm-3.3.jar、asm-commmons-3.3.jar、asm-tree-3.3.jar、common-fileup load-1.2.jar common-lang-2.5.jackage.jack.javastr.strを継承します。name:必須属性です。packageの名前は、異なるpackage namespaceを区別するために使用されます。アクセス経路は、許可形式には、/、XX、/XX/xx extens:父packageの名前【action属性】name:必須属性があります。actionのアクセス名。アクセス形式は、actionName.extension extension(拡張子)がdefault.propertiesでactionまたは空classと定義されています。オプション属性です。action対応のクラスを指定します。指定しない場合は、デフォルトのcompensymphone.xwork 2.アクションSupport method:オプションです。訪問するactionの方法を指定します。デフォルトはexecute()です  【result属性】name:複数のresultを区別するために使用します。アクションの戻り値に対応する。strutsは、リセットされた文字列から同名のReseltのラベルを見つけて、アクセスするページを特定します。デフォルトはsuccess type:ページジャンプのタイプです。chain、redirect、dispatcher、redirectActなどの例があります。
		
<?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>
	<package name="default" namespace="/" extends="struts-default">
		<default-action-ref name="index"></default-action-ref>
		<action name="index" class="com.jnmc.unique.MyAction">
			<result>/index.jsp</result>
		</action>
	</package>
</struts>
3.struts.xml配置補充①デフォルトactionの構成:指定されたページが見つからない場合は、デフォルトで指定ページにアクセスします。

<default-action-ref name="index"></default-action-ref>
name:actionの名前②グローバル結果集:同じパッケージ内のすべてのactionによって共有された結果集

<global-results>
			<result name="error">/error.jsp</result>
	</global-results>
③異常マッピング:actionに異常があるとstrutsのブロックが捉えられます。その後、異常マップから指定されたactionにジャンプし、異常を処理します。result:目的actionのname exception:異常なタイプを指定します。

<exception-mapping result="error" exception="java.lang.Exception"/>
④グローバル異常マッピング:同じpackageでのすべてのactionで共有されます。一般的にグローバル結果セットと組み合わせて使用します。もちろん、各actionでexceptionを処理するactionをそれぞれ指定することもできます。

<global-results>
			<result name="error">/error.jsp</result>
		</global-results>
		
		<global-exception-mappings>
			<exception-mapping result="error" exception="java.lang.Exception"/>	
		</global-exception-mappings>
⑤wildcard(ワイルドカード):ワイルドカードの使用は、設定量を大幅に低減することができます。任意の長さの文字列にマッチします。

	<action name="user_*" class="com.jnmc.unique.User{1}Action">
			<result>/user_{1}.jsp</result>
	</action>
ブラウザでノックします。http://hostname:port/webapp/user_Addは、UserAaddActionにアクセスし、successに戻ると、user_を表示する。add.jspページ⑥Interceptor(ブロック):struts-default.xmlにはInterceptorがたくさん配置されていますので、struts-default.xmlを読んでください。まず一つの概念を紹介します。Interceptor StockはInterceptorチェーンテーブルで、その中には順番に複数のInterceptorが格納されています。それらは全部メモリに保存されています。actionタグペアにブロッキングを追加することができます。struts-default.xmlには以下のような構成があるからです。

<default-interceptor-ref name="defaultStack"/>
ですから、私たちはIntercepterを指定しないでdefault Stockで定義された複数のInterceptorを使用します。指定するとstruts-default.xmlの構成をカバーします。このようにすることを提案します

<action name="index" class="com.jnmc.unique.MyAction1">
		<interceptor-ref name="defaultStack"/>
<interceptor-ref name="chain"/>
</action>
このようにして、複数のスクリーンセーバーをブロックチェーンに追加し、実行順序は追加順序と同じです。注意:chainはstruts-default.xmlに配置された単一Interceptorです。⑦ユーザー定義のスクリーンセーバは一つのカテゴリーを作成するだけで、AbstractInterceptorから継承したり、Interceptorインターフェースを実現したりして、struts.xmlのパッケージラベルペアに配置します。例:

<interceptors>
			<interceptor name="timeInterceptor" class="com.jnmc.struts2.interceptor.TimeInterceptor"/>
</interceptors>
そしてactionでそれを指定します。(方法は前に話しました)
-----------------strutsに関する詳細については、順次掲示します。