Java Servlet request.getRequestURL()记录了异常字符串

时间:2012-05-08 09:57:28

标签: networking servlets

在我的一个在公共域中运行的servlet中,我从request.getRequestURL()方法获得了一个异常的字符串日志。我一直记录详细信息并找到一个条目“http://answers.yahoo.com”。有人可以帮助我分析这可能发生的原因以及如何实现它。理想情况下,日志应该是浏览器中用户或设备调用servlet的URL地址。

例如,如果映射到IP的服务器的注册名称为http://www.alphabeta.com/x_serv?a=2,则日志应为alphabeta.com

1 个答案:

答案 0 :(得分:0)

您想要记录的是什么?

如果您只需要主机名,请使用接口getServerName()中的方法javax.servlet.ServletRequest。它返回发送请求的服务器的主机名。

如果您想获取没有任何由servlet引起的参数的URL,请与getServerName()和方法getServletPath()结合使用。接口getServletPath()中的方法javax.servlet.http.HttpServletRequest返回此请求的URL的一部分,该URL调用servlet但不包含任何额外的路径信息或查询字符串。

以下代码片段将确定您网页的绝对网址:

String uri = request.getRequestURI();
if (request.getQueryString() != null) {
   uri += '?' + request.getQueryString();
}
URL reconstructedUrl = new URL(request.getScheme(),
                           request.getServerName(),
                           request.getServerPort(),
                           uri);
logger.info("The full URL: " + reconstructedUrl.toString());

URL类来自包java.net