getURI显示JSP名称而不是浏览器URL?

时间:2012-10-02 17:19:14

标签: jsp analytics

我正在尝试将浏览器地址栏中显示的网址拉入Google Analytics标记。我用了

                <%                   String getURI = request.getRequestURI();                 %GT;

方法,但它显示的是JSP文件名/路径,而不是浏览器中的内容。

我这样做是错误的还是因为我在VM上的开发人员ToolKit中执行此操作而预期的是什么?我查看了论坛并查看了Google,但找不到我的问题的答案,似乎没有解决它在本地环境中以不同方式工作的可能性,所以我认为我做错了。

2 个答案:

答案 0 :(得分:1)

如果前端控制器的JSP是forwarded,那么HttpServletRequest#getRequestURI()确实会返回JSP的URI而不是客户端最初请求的原始URI(在浏览器的地址中可见)巴)。

如果是转发,原始请求URI可用作请求属性,其中RequestDispatcher#FORWARD_REQUEST_URI标识的密钥为javax.servlet.forward.request_uri

所以,这应该做:

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

或者当你还在使用Servlet 2.5或更早版本时(Servlet 3.0中引入了这个常量):

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

顺便说一下,它在JSP EL中可用如下:

${requestScope['javax.servlet.forward.request_uri']}

答案 1 :(得分:0)

是的,这是应该做的。使用request.getRequestUrl(),这将给你完整的(http://www../xyz.jsp)

编辑 有关两种方法的说明,请参阅此处 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 你可以加一个'/'。 不确定是否有直接的方法来寻找你想要的东西