我有一个使用 Thymeleaf 作为模板引擎的 Spring boot 应用程序,我添加了一个默认控制器,当在服务器上部署时应该重定向到主页,控制器代码片段如下:
@Controller
public class HomeController
{
@RequestMapping("/")
public String index()
{
return "index";
}
}
索引由 ViewResolver 解析到匹配的网页。
在独立的 Tomcat 实例上部署生成的战争“app.war”时,应用程序工作正常,我被重定向到主页(localhost:XXX/context_path/index),“localhost:XXX /
在 Weblogic 上部署时,尝试访问 URL 时出现错误: “localhost:XXX/context_path”,当我手动添加“/”时它有效。
我发现这个教程 https://o7planning.org/en/11245/deploying-spring-mvc-on-oracle-weblogic-server 建议添加 / 到 weblogic.xml 文件,效果很好。
但是,当强制context-root为“/”时,部署在weblogic上的应用程序的主页URL不再相同 (“localhost:XXX/index”而不是“localhost:XXX/war_name/index”)。
综上所述,Tomcat 自动将“/”添加到上下文根,而无需配置上下文根。
如何在不在 weblogic.xml 上配置上下文根的情况下使用 weblogic 获得相同的行为?
我正在使用 weblogic Server 12c.
我仍然遇到同样的问题,解决方案是对 Spring 服务的静态文件(默认索引文件)执行简单的破解。
<script type="text/javascript">
if (window.location.pathname.slice(-1) !== '/') {
window.location.assign(window.location.pathname + '/');
}
</script>