我正在尝试将浏览器地址栏中显示的网址拉入Google Analytics标记.我用了 % String getURI = request.getRequestURI(); %GT; 方法,但它显示的是JSP文件名/路径,而不是浏览器中的内容. 我这样做是错误
<%
String getURI = request.getRequestURI();
%GT;
方法,但它显示的是JSP文件名/路径,而不是浏览器中的内容.
我这样做是错误的还是因为我在虚拟机上的开发人员ToolKit中这样做而预期的是什么?我查看了论坛并查看了Google,但找不到我的问题的答案,似乎没有解决它在本地环境中以不同方式工作的可能性,所以我认为我做错了什么.
如果前端控制器的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']}