我认为 ServletContext 可能提供一个方法。ServletContext 的 getAttribute() 方法是否提供任何帮助,例如是否有一个属性名称(可能是"host"、"port"),对解决问题有帮助。
原因是我希望我的应用程序在部署在任何地方都能运行,并且在某一点上,我必须允许用户单击指向文件服务器位置的链接。因此,我需要通过主机和端口引用,不能使用内部引用。
ServletRequest.getServerName(...)
ServletRequest.getServerPort(...)
您的doGet
或doPost
方法传递的ServletRequest
对象具有getServerName
和getServerPort
方法,可提供此信息。
例如:
public void doGet(ServletRequest request, ServletResponse response) {
System.out.println("Host = " + request.getServerName());
System.out.println("Port = " + request.getServerPort());
}
request.getServerName() + ":" + request.getServerPort();
- Simon Bengtsson@每个人都有一个好答案。但是,将方案、服务器名称和端口合并起来。有一种更简单的方法:
你可以使用HttpServletRequest.getRequestURL和HttpServletRequest.getRequestURI。
StringBuffer url = request.getRequestURL();
String uri = request.getRequestURI();
String host = url.substring(0, url.indexOf(uri)); //result
request.getHeader("host").contains("xxx")
也许这就是解决方案?