SpringBoot2.X|SpringBoot2.X 版本 WebMvcConfigurerAdapter 弃用

SpringBoot2.X 版本 WebMvcConfigurerAdapter 弃用

以下WebMvcConfigurerAdapter 比较常用的重写接口
/** 解决跨域问题 **/ public void addCorsMappings(CorsRegistry registry) ; /** 添加拦截器 **/ void addInterceptors(InterceptorRegistry registry); /** 这里配置视图解析器 **/ void configureViewResolvers(ViewResolverRegistry registry); /** 配置内容裁决的一些选项 **/ void configureContentNegotiation(ContentNegotiationConfigurer configurer); /** 视图跳转控制器 **/ void addViewControllers(ViewControllerRegistry registry); /** 静态资源处理 **/ void addResourceHandlers(ResourceHandlerRegistry registry); /** 默认静态资源处理器 **/ void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);

新的
1.实现WebMvcConfigurer(推荐使用)
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class MyMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("login"); registry.addViewController("/login.html").setViewName("login"); registry.addViewController("/main.html").setViewName("dashboard"); } }

2.继承 WebMvcConfigurationSupport
【SpringBoot2.X|SpringBoot2.X 版本 WebMvcConfigurerAdapter 弃用】继承WebMvcConfigurationSupport这个类,在扩展的类中重写父类的方法即可,但是这种方式是有问题的,这种方式会屏蔽Spring Boot的@EnableAutoConfiguration中的设置。这时候启动项目时会发现映射根本没有成功,读取不到静态的资源也就是说application.properties中添加配置的映射配置没有启动作用,然后我们会想到重写来进行映射:
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class MyMvcConfig extends WebMvcConfigurationSupport { @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/resources/static"); } @Override protected void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("login"); registry.addViewController("/login.html").setViewName("login"); }}

thymeleaf springBoot2.0版本以上不用再切换thyme leaf版本
层叠样式 必须使用对应的rel值

加入rel=“stylesheet” 就好了(表示文档的外部样式表)
th:actioin处理登录请求
method:post方式的请求

@RequestParam(“username”) @RequestParam(“password”) 只要添了@RequestParam 注解,一旦没提交就会报错。
@Controller public class LoginController { @PostMapping(value="https://www.it610.com/user/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password, Map, Object> map){ if(!StringUtils.isEmpty(username)&&"123456".equals(password)){ return "redirect:/main.html"; }else{ map.put("msg","用户名密码错误"); return "login"; }} }

HandlerInterceptor 一个方法要成为拦截器必须实现HandlerInterceptor接口
public class LoginHandlerInterceptor implements HandlerInterceptor {}

重定向页面
request.getRequestDispatcher("/index.html").forward(request,response);

forward把页面写出去,记得一定要写出去
1: 开启HiddenHttpMethodFilter[#](https://www.cnblogs.com/dgwblog/p/11976640.html#2783284569 处理DeleteMapping请求时,前端发来的请求依旧时post请求,在配置文件中添加
最新版本的spring boot 默认不开启 restful 分割api
开启方法
# 启用hiddenMethod过滤器 spring.mvc.hiddenmethod.filter.enabled=true

通过使用隐藏域参数来
th:attr="del_uri=@{/emp/}+${emp.id}"

当然也可以使用传统POST 来做处理 , 在from里面多做几个参数

    推荐阅读