我正在尝试将浏览器地址栏中显示的网址拉入Google Analytics标记。我用了
<%
String getURI = request.getRequestURI();
%GT;
方法,但它显示的是JSP文件名/路径,而不是浏览器中的内容。
我这样做是错误的还是因为我在VM上的开发人员ToolKit中执行此操作而预期的是什么?我查看了论坛并查看了Google,但找不到我的问题的答案,似乎没有解决它在本地环境中以不同方式工作的可能性,所以我认为我做错了。
答案 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 你可以加一个'/'。 不确定是否有直接的方法来寻找你想要的东西