私はTomcat 7でStruts 2.3を使用しています。要求をフィルタリングするときにTomcatはstruts2とどのように連携しますか?拡張機能で指定されたアクションへのStrutsマッピングが機能しない
Strutsのアクション名を拡張子付きのものに設定すると、動作しません。
<action name="login.html">
<result>/WEB-INF/content/login.jsp</result>
</action>
は、Tomcatは、Strutsのリクエストを処理できないだろう、なぜ、login.html
のような静的なファイルはありません。
URL login.html
にアクセスすると、tomcatは404ページを返します。
アクション名をlogin
などの拡張子なしに変更すると、tomcatは結果ページを返します。
web.xml
は、このようなものです:
<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>
私は一定のstruts.action.excludePattern
を設定しませんでした。 私はtomcatとStrutsがこのurlマッピングを行う方法を理解できません。
マップされていないURLを処理するには、これをstruts.xml
の末尾に設定します。
<action name="**">
<result>/index.html</result>
</action>
静的ファイルが存在する場合は、Tomcatは、応答として静的ファイルを使用するのではなくStrutsのは、このダミーワイルドカードアクションにリクエストをマッピングしてみましょう。
私は静的ファイルが存在するときにTomcatがStrutsフィルタを使用しないと仮定します。
しかし、URLの下に静的ファイルがない場合、Strutsが拡張子を持つURLを処理しない理由は私にはまだ混乱しています。