2

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

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

4

1 回答 1

0

你到底想记录什么?

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

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

以下代码片段将确定您页面的绝对 URL:

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());

哪里URLclass 来自 package java.net

于 2012-05-08T10:35:21.797 回答