0

サーブレットを使用するときに、どのように、いつ.doが任意のURLに追加されるかについて、私はすでにここで疑問の余地がありません...

今日、私がフィルターについて学んだとき、別の疑問が起こりました:

<filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

この場合、/ *とは何ですか、それがすべての要求をチェックすることを意味する場合はどうなりますか?さらに、アクションが呼び出されると、Like url says: http://..../myapp/register.action.が追加され、マッピングでも言及されません。この疑問を解消してください。可能であれば、疑問も解消してください....do.action.do

4

2 に答える 2

1

疑問を1つずつ解決してみましょう。web.xmlの以下の行

<filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

S2フィルターを呼び出すためのエントリーです。line<url-pattern>/*</url-pattern>は、コンテナ(tomcat / weblogicなど)に、いつコンテナがフィルタを呼び出す必要があるかを通知します。S2の場合、アプリケーションが機能するために多くの初期化作業を行う必要があるため、コンテナーに送信される各リクエストはS2フィルターを通過する必要があることをコンテナーに通知しています。

のようなURLの拡張子に関しては.action,.do、これはS2内部であり、で見たフィルターマッピングとは関係ありませんweb.xml

つまり、次のようなURLをヒットした場合

yourapplication-domian/abc.action
yourapplication-domian/abc.do
yourapplication-domian/abc.jsp

上記のすべてのリクエストはフィルターを通過し、フィルターを通過すると、S2は内部で有効なS2 URLをチェックします。たとえば、拡張子を設定した場合、.actionS2はそれらの拡張子を持つURLのみを認識して処理します。フィルタはすべてを処理します。

これがあなたの疑問を解消するのに役立つことを願っています

于 2012-05-08T07:24:37.037 に答える
0

struts-core jarでstruts-default.propertiesを見つけて、これらの設定を見つけることができます。

カンマ区切りのリストを指定できます。

例えばstruts.action.extension=action,jnlp,do

   struts.action.extension=action (default setting)
于 2012-05-07T14:37:05.920 に答える