当前位置: 首页 > 知识库问答 >
问题:

控制器和静态页面的Spring Boot url映射顺序

史修明
2023-03-14

我有一个Spring Boot web应用程序,它可以服务于静态页面和基于控制器的页面(ModelAndView)。问题是,控制器可以提供类似于<代码>/{字符串}的服务,而静态页面必须提供<代码>/测试。

问题是控制器映射优先,我需要避免这种情况。如果用户点击测试,则必须将其转发到测试。html静态页面。

我尝试以这种方式使用ViewControlller注册表的order属性,但没有成功:

@Configuration
public class MyWebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/test").setViewName("forward:/test.html");
        registry.setOrder(Ordered.HIGHEST_PRECEDENCE); // but I tried with 0 and -1 as well: annotated controllers should have order equals to 0
    }

}

这是我的SpringBootApplication类:

@SpringBootApplication
public class VipApplication {

    public static void main(String[] args) {
        SpringApplication.run(VipApplication.class, args);
    }

}

这是控制器代码:

@Controller
public class VipController {

    @RequestMapping(value = "/{string}")
    public ModelAndView vip(@PathVariable("string") String string) {
        ModelAndView mv = new ModelAndView("mypage");
        return mv;
    }

}

如何重新排序映射以确保在注释控制器之前考虑静态页面?

共有1个答案

红富
2023-03-14

(我不确定,但)我建议重写WebMVCConfigureAdapter。addResourceHandlers()方法,并通过调用ResourceHandlerRegistry配置资源处理程序的顺序。setOrder()

 类似资料:
  • 我有如下控制器方法: 我有URLlocalhost:8080/login/do作为方法内部登录过程方法的URL,一些业务逻辑是在执行时编写的,它将带我到一些页面candidate.html、passworderror.html等,但是在移动到URL显示为localhost:8080/login/candidate.jsp的任何页面时,我不希望 /login出现在URL中。强文本,因为如果我向前移动

  • 和我的disparcher上下文: 即使我添加了@service和@repositort(“userdao”)

  • 我想创建Spring boot Web应用程序。 我有两个静态html文件:一个。html,两个。html。 我想将它们映射如下 不使用模板引擎(Thymeleaf)。 如何做到这一点?我已经尝试了很多方法来实现这一点,但我有404个错误或500个错误(循环视图路径[one.html]:将调度回当前处理程序URL)。 OneController.java是: 项目结构为

  • 当存在多个时,视图解析器如何确定要加载哪个控制器。 我正在从头开始学习Spring,正如我的导师所说,我们只需要一个带有注释的控制器类。如果我有多个带有注释的类,以及如何确定要加载哪个控制器类,因为Spring是Singleton,并且只有一个控制器类存在。

  • 有类似的主题,但它们都使用xml配置文件。我之所以写这个问题,是因为我使用了注释。 我在运行应用程序时遇到问题: 在尝试设置Spring servlet时,获取WARNorg.springframework.web.servlet.PageNotes-未找到HTTP请求与URI的映射 尝试在服务器上运行时出现错误404 以下是我的代码(跳过包和导入): 1)初始化器 2)应用配置 3)控制器 控制