UpH*_*lix 7 java url jsp jstl el
我想用JSTL从url获取域名.我知道的两种方法返回错误的信息.我需要URL中的确切内容.
当我做:
${pageContext.request.remoteHost}
Run Code Online (Sandbox Code Playgroud)
我得到了服务器的IP.
当我做:
${pageContext.request.serverName}
Run Code Online (Sandbox Code Playgroud)
我通常得到正确的域名,但在服务器上,我们在亚马逊上返回"server1"而不是正确的域名,可能是因为它处理多个域的方式.
有谁知道如何在URL中获取当前域名?
我可能需要获取URL然后解析它.我该怎么办?
Bal*_*usC 12
你应该使用ServletRequest#getLocalName()而不是.它返回服务器的真实主机名.的ServletRequest#getServerName()的确返回在设定值Host标头.
${pageContext.request.localName}
Run Code Online (Sandbox Code Playgroud)
就这样.在其他答案中提出的解决方案显然是笨拙和笨拙的.
顺便说一句,ServletRequest#getRemoteHost()它不返回服务器的主机名,而是客户端的主机名(或主机名不能立即解析时的IP).无论何时在物理上都在同一台机器上运行webserver和webbrowser,它显然与服务器相同.如果您对服务器的IP感兴趣,请使用ServletRequest#getLocalAddr().术语"本地"和"远程"必须从服务器的角度解释,而不是从客户端解释.它是在所有Java代码运行的服务器之后.
您可以用来HttpServletRequest.getRequestUrl():
重建客户端用于发出请求的 URL。返回的 URL 包含协议、服务器名称、端口号和服务器路径,但不包含查询字符串参数。
这将返回一个字符串,例如使用 JSTL 在 url 中获取域名?
然后,解析它以查找方案(http、https 等)之后和requestURI之前的字符串应该很简单。