gpt4 book ai didi

java - 如何在 Spring 中找到当前 webapp 的基本 URL?

转载 作者:太空狗 更新时间:2023-10-29 22:31:55 26 4
gpt4 key购买 nike

我想从 Controller 中找到 Spring 中 webapp 的绝对 URL。我知道 JSTL c:url,但我需要 Controller 内部的此信息。

@Controller
public class AuthorizeController {

@Autowired
private Authorizer auth;

@RequestMapping("/auth")
public String sendToAuthorization() {
String baseUrl = "http://localhost:8080/tasks/";
return "redirect:" + auth.getAuthorizationUrl(baseUrl);
}

}

如您所见,baseUrl 是硬编码的,我可以通过 Spring 配置将其提供给 Authorizer 类,但我确信可以从 Controller 中的 Spring 获取此信息。我尝试用谷歌搜索“spring mvc url”,但找不到解决此问题的方法。

最佳答案

我认为只有在处理请求时才能获取绝对 url,因为您的服务器可能有许多 IP 地址和域名。

 @RequestMapping("/auth")
public String sendToAuthorization(HttpServletRequest request) {
String baseUrl = String.format("%s://%s:%d/tasks/",request.getScheme(), request.getServerName(), request.getServerPort());


return "redirect:" + auth.getAuthorizationUrl(baseUrl);
}

对于servlet,在web.xml中也可能有几个映射。

similar question

附言无论如何,在我看来,在运行时进行 url 解析并不是一个好主意。

关于java - 如何在 Spring 中找到当前 webapp 的基本 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6814611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com