サーバ環境として、tomcatとstruts2+springを使用しています。
最初に、やりたいことを整理します。
・web/test.actionにアクセスされた場合は、www.google.comに転送する。
・web/test.action以外のweb/*にアクセスされた場合は、struts2に制御を渡す。
・Actionなどjavaのコードには手を加えず、web.xmlとjspなどコンパイル不要な設定だけで実現したい。
tomcatでリダイレクトする方法として、以下のようにservlet-mappingを指定し、redirector.jspから任意の場所に転送させる方法を検討しています。
<servlet>
<servlet-name>Redirector</servlet-name>
<jsp-file>/redirector.jsp</jsp-file>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Redirector</servlet-name>
<url-pattern>/web/*</url-pattern>
</servlet-mapping>
デフォルトのweb.xmlに対して上記を設定すると意図通り転送されるのですが、以下のstruts2のfilter-mappingを設定していると転送されません。
理由としては、先にStrutsPrepareAndExecuteFilterからActionが呼び出され、viewの作成まで完了するからだと想像しているのですが、、
<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>/web/*</url-pattern>
</filter-mapping>
例えばfilter-mappingに除外パターンがあれば、意図通り動作させることができると思うのですが、そのような設定はできないようなので。
上記に記載したやりたいことを実現する方法として、何か良い案はありますでしょうか。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/06 13:02