gpt4 book ai didi

java - Spring 中带有 url 模式重定向的上下文路径

转载 作者:行者123 更新时间:2023-11-28 21:54:30 27 4
gpt4 key购买 nike

我对 tomcat 服务器上的路径和 url 有点困惑,让我解释一下:

我的tomcat webapp目录是:/server

我已经在目录/server/myapp/subfolder 中部署了一个 spring 应用程序

这意味着我的上下文路径/server/myapp

我的 servlet 有一个 url-pattern 为/subfolder/*

可以通过 url http://server.com/myapp/subfolder/ 访问我的 servlet

在我的许多 spring Controller 中,我返回一个重定向:

return "redirect:/item/list";

这会将访问者重定向到 http://server.com/myapp/item/list

这当然会导致 404,因为正确的 URL 是:http://server.com/myapp/subfolder/item/list

这可以很容易地解决,只要把所有东西都放在一个单独的网络应用程序中,或者简单地删除 url-pattern。但两者都是不可能的,因为单独的 webapp 意味着不同的类加载器(导致其他系统出现问题)和类似/的 url-pattern 将与服务器上运行的其他应用程序发生冲突。

我可以将重定向更改为“redirect:/subfolder/item/list”,这将修复重定向。

是否有更好的解决方案,这样我就不必在使用上下文路径的任何地方手动添加“子文件夹/”?

最佳答案

我知道这是一个老问题,但如果有人正在寻找当前答案,RedirectView(至少在最新的 5.0.9 版本中)有一个默认为 false 的 contextRelative boolean 参数。将其设置为 true 使重定向上下文相对。例如:

return new RedirectView("/account", true);

引用:docs

关于java - Spring 中带有 url 模式重定向的上下文路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27843540/

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