- PR -

リクエストURIの取得方法

1
投稿者投稿内容
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2006-12-25 16:24
Tomcat+Spring環境なのですが、
例えば、http://localhost:8080/foo/WEB-INF/pages/bar.jsp というJSPに対して、
http://localhost:8080/foo/bar.html というURLをディスパッチしております。

JSPの中で、"/foo/bar.html"の部分(つまり、リクエストしたURI)を取得したかった
ので、request.getRequestURI() とかしてみたのですが、
"/foo/WEB-INF/pages/bar.jsp"の方が取れてしまいます。
request.getServletPath() も同様にjspの方が取れます。
"/foo/bar.html"の方を取得する方法を教えてください。
最悪、"/foo/WEB-INF/pages/bar.jsp"という文字列から、"/foo/bar.html"に変換する
ことも可能ですが、"なんだかなぁ"です。

あるいは、taglib の"${url}"に"bar.html"の部分は持っているので、
JSPのJavaのディレクティブ内(<% 〜 %>の中)から、taglib の"${url}"の値を
取得する方法を教えていただけないでしょうか。

よろしくお願いいたします。
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2006-12-25 17:02
RequestDispatcher#forward(ServletRequest,ServletResponse)
すると、getRequestURI()が返す値が
ServletRequest#getRequestDispatcher(String)で指定した値に
置き換わるようですね。
Tomcat 4.1.31で試したところそうなってました。
これが仕様通りなのか、このバージョンのバグなのかは分かりませんが。

代わりに、ServletRequest#getRequestURL()を使用して
以下のようにすることで、お望みのものを取得できました。
コード:

<% StringBuffer url = request.getRequestURL(); %>
<%= url.substring(url.indexOf(request.getContextPath())) %>



[ メッセージ編集済み 編集者: koe 編集日時 2006-12-25 17:03 ]
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2006-12-25 17:20
koeさん、調査してくださってありがとうございます。

私はTomcat-5.5.9なのですが、
request.getRequestURL()でも同様にjspの方が取れてしまいます。
1

スキルアップ/キャリアアップ(JOB@IT)