有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用两个URL映射

我想将我的应用程序迁移到SpringBootJAR部署。它目前使用Spring4而不启动

我在/api/*有一个REST-API侦听,在src/main/webapp有一个Javascript前端,可以在/*访问它

现在我找不到一个方法在靴子里做同样的事情

通过更改server.context-path属性,我成功地让api在/api/*侦听,但我没有注册第二个servlet来为我在/*的js前端提供服务。我知道jar部署不支持src/main/webapp,我还知道springboot提供来自src/resources/publicsrc/resources/static的静态文件。但是在我的例子中,由于server.context-path的变化,这些文件夹也指向/api/*

我尝试将另一个servlet注册为bean。这破坏了我的api端点

实现这一目标的最佳方式是什么


共 (2) 个答案

  1. # 1 楼答案

    对于多个映射,您必须为每个映射添加一个映射,并在控制器中映射该映射,如下所示

     @Controller
     @RequestMapping(value = { "${url.mapping}","${url.mapping.two}" })
     public class CustomerController{
    
  2. # 2 楼答案

    第一个选项-将所有内容从src/main/webapp复制到src/resources/static。这就是SpringBoot查找静态内容的地方

    第二个选项,继续使用src/main/webapp,但将构建配置为将静态资源复制到target/classes/static。我在前面的回答中为此提供了Maven配置:Refreshing static content with Spring MVC and Boot

    请注意,如果使用第一个选项,如果希望修改内容并在不运行构建的情况下自动重新加载内容,则需要在IDE中运行应用程序。如果您正在执行jar,那么使用第二个选项可以让您像Tomcat一样重新加载静态内容,但是可能会导致一些混乱。就我个人而言,我大部分时间都使用第二个选项,因为我喜欢在命令行上运行应用程序,并使用Chrome开发工具编辑我的HTML和JavaScript