4

ブラウザのアドレス バーに表示される URL を Google アナリティクス タグに取り込もうとしています。

<% String getURI=request.getRequestURI();を使用しました。%>

メソッドですが、ブラウザにあるものではなく、JSP ファイル名/パスが表示されます。

私はこれを間違っていますか、それとも VM 上の開発者ツールキットでこれを行っているので、それは予想されることですか? フォーラムを調べて Google を調べましたが、私の質問に対する答えが見つかりません。ローカル環境で別の方法で動作する可能性に対処するものはないようです。何か間違ったことをしたと思います。

4

2 に答える 2

1

JSPがフロントコントローラーによって転送HttpServletRequest#getRequestURI()された場合、は実際に、クライアントが最初に要求した元のURIではなくJSPのURIを返します(ブラウザーのアドレスバーに表示されます)。

転送の場合、元のリクエストURIは、で識別されるキーを持つリクエスト属性として使用できます。RequestDispatcher#FORWARD_REQUEST_URIこれは。ですjavax.servlet.forward.request_uri

したがって、これは次のことを行う必要があります。

String getURI = request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI);

または、サーブレット2.5以前を使用している場合(この定数はサーブレット3.0で導入されました):

String getURI = request.getAttribute("javax.servlet.forward.request_uri");

ちなみに、JSPELでは次のように利用できます。

${requestScope['javax.servlet.forward.request_uri']}
于 2012-10-02T17:31:28.370 に答える
0

はい、それはそれがすべきことです。request.getRequestUrl() を使用すると、完全な情報が得られます (http://www...../xyz.jsp)

編集 2 つのメソッドの説明については、こちらを参照してください http://docs.oracle.com/javaee/1.3/api/javax/servlet/http/HttpServletRequest.html

2を編集して、要するに、クエリは、現在のtgeファイルのファイル名が必要であるということです。

次のようなものを試してください

request.getRequestURI().substring(request.getRequestURI().lastIndexOf("/"))

これにより、文字列welcome.htmlが得られます。welcome.html内にいる場合は、先頭に「/」を追加できます。あなたが求めるものへの直接的な方法があるかどうかわからない

于 2012-10-02T17:27:02.500 に答える