WebMvcConfigurer的addViewControllers视图路径映射

506 阅读1分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路

一,使用场景

很多时候,我们使用SpringBoot来写项目的时候,项目的架构可能是前后端不分离的,前端发送请求,后端可能只需要一个页面的跳转,没有业务逻辑,这个时候,我们可以写Controller来处理这些请求,如:

@Controller
public class LoginController {

    @GetMapping("/login.html")
    public String loginPage(){
        return "login";
    }

    @GetMapping("/reg.html")
    public String regPage(){
        return "reg";
    }
}

但是这些代码,仅仅是页面的跳转,并没有实际业务,所以我们也可以使用WebMvcConfigurer视图映射来完成功能,addViewControllers方法可以实现将一个请求直接映射为视图,不需要编写控制器来实现,从而简化了页面跳转。

二,使用方法

  • 1,写一个配置类,实现WebMvcConfigurer
  • 2,重写addViewControllers(ViewControllerRegistry registry)方法,
  • 3,给视图控制器(ViewControllerRegistry)添加视图路径映射
/**
 * 视图路径映射
 */
@Configuration
public class NaisimallWebConfig implements WebMvcConfigurer {
    
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        /**
         * @GetMapping("/login.html")
         * public String loginPage(){
         *      return "login";
         * }
         */
         //相当于上面代码
         
        registry.addViewController("/login.html").setViewName("login");
        registry.addViewController("/reg.html").setViewName("reg");
    }
}

这样,我们不使用@GetMapping("/login.html")等方法,也可以完成指定路径视图的跳转

三,注意

1,路径映射默认都是get方式访问的,如果是POST方法,就不能使用,会出现HttpRequestMethodNotSupportedException: Request method ‘POST‘ not supported异常, 2,如果是POST方式,提交表单,需要页面的跳转,可以使用重定向方式,即redirect