在
HttpServletRequest,您可以使用以下方法获取URI的各个部分。您也可以使用它们逐块重构URL(以帮助调试或其他任务),如下所示:
// Example: http://myhost:8080/people?lastname=Fox&age=30
String uri = request.getScheme() + "://" + // "http" + "://
request.getServerName() + // "myhost"
":" + request.getServerPort() + // ":" + "8080"
request.getRequestURI() + // "/people"
(request.getQueryString() != null ? "?" +
request.getQueryString() : ""); // "?" + "lastname=Fox&age=30"
“根域”:
对于“根域”,您必须处理从getServerName()返回的String。这是必要的,因为Servlet将无法提前知道您所谓的“主机”,或者只是一个.com这样的域名(它可能是您网络中名为com的机器,而不仅仅是后缀)知道?)。
对于您提供的模式(三分之二级的com / net),以下内容应该可以得到您需要的内容:
String domain = request.getServerName().replaceAll(".*\\.(?=.*\\.)", "");
以上将给出以下输入/输出:
www.test.com -> test.com
test1.example.com -> example.com
a.b.c.d.e.f.g.com -> g.com
www.com -> www.com
com -> com