Strutsでのpublic URLへのリダイレクト。
簡単そうにできそうで実は面倒だったリダイレクト……。
なぜかというと、以前は以下の方法でできたんです。
// TestAction.java 内、 Test#execute() 。 return new ActionForward( "http://d.hatena.ne.jp/", true );
ところが、 Struts1.2以降はこれができなくなったみたいなんです。
たとえば上記の TestAction を以下のようなパスで実行していたとします。
http://localhost/webapp-test/Test.do
この場合に、上記のコードは
http://localhost/webapp-test/http://d.hatena.ne.jp/
というURLを生成してリダイレクトしてしまいます。
そこで、StrutsではJSP側でリダイレクトします。
<logic:redirect href="http://d.hatena.ne.jp/" />
このように、<logic:redirect>タグを使うと外にリダイレクトできます。
ちなみに
<logic:redirect href="/Test/00000000.html" />
とすると、
http://localhost/Test/00000000.html
というURLを作ってリダイレクトしてくれるので、普通のHTMLページに飛びたいときや、今回のようにmod_rewriteでの使用を前提にしたURLにリダイレクトしたい場合に非常に便利です。