在我的一个在公共域中运行的servlet中,我从request.getRequestURL()方法获得了一个异常的字符串日志。我一直记录详细信息并找到一个条目“http://answers.yahoo.com”。有人可以帮助我分析这可能发生的原因以及如何实现它。理想情况下,日志应该是浏览器中用户或设备调用servlet的URL地址。
例如,如果映射到IP的服务器的注册名称为http://www.alphabeta.com/x_serv?a=2,则日志应为alphabeta.com
答案 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
。