在 Java 中从相对 URL 构建绝对 URL

2022-09-02 19:38:42

我在从相对URL构建绝对URL而不诉诸字符串黑客攻击时遇到问题...

鉴于

http://localhost:8080/myWebApp/someServlet

方法内部:

   public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}

最“正确”的构建方式是什么:

http://localhost:8080/myWebApp/someImage.jpg

(注意,必须是绝对的,不是相对的)

目前,我正在通过构建字符串来做到这一点,但必须有更好的方法。

我已经查看了新URI / URL的各种组合,最终我得到了

http://localhost:8080/someImage.jpg

帮助非常感谢


答案 1

使用 java.net.URL

 URL baseUrl = new URL("http://www.google.com/someFolder/");
 URL url = new URL(baseUrl, "../test.html");

答案 2

怎么样:

String s = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/someImage.jpg";