当前位置 : 主页 > 编程语言 > java >

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

来源:互联网 收集:自由互联 发布时间:2021-06-25
我正在尝试将浏览器地址栏中显示的网址拉入Google Analytics标记.我用了 % String getURI = request.getRequestURI(); %GT; 方法,但它显示的是JSP文件名/路径,而不是浏览器中的内容. 我这样做是错误
我正在尝试将浏览器地址栏中显示的网址拉入Google Analytics标记.我用了
                <%
                  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']}
网友评论