记学习雷锋阳老师springboot中的问题

1.WebMvcConfigurationAdapter

SpringBoot 2.x 后WebMvcConfigurationAdapter 过时,2.x实现WebMvcConfigurer接口

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {

    //将组件注册到容器
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("login");
        registry.addViewController("main.html").setViewName("dashboard");
        registry.addViewController("/index.html").setViewName("login");
        registry.addViewController("/atguigu").setViewName("success");
    }

    //注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandleInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/index.html","/user/login","/","/static/**","/webjars/**");
    }
 }

2.无法使用put传值

明明在表单中配置了put去仍然是post传递

<form action="/emp" method="post">
    <input type="hidden" name="_method" value="put"/>

查看webmvc的自动配置类

{
      "name": "spring.mvc.hiddenmethod.filter.enabled",
      "type": "java.lang.Boolean",
      "description": "Whether to enable Spring's HiddenHttpMethodFilter.",
      "defaultValue": false
},

默认配置为false,即该组件是默认没有加入容器的。
于是在配置文件中将其值改为true,是其自动加入容器中

spring.mvc.hiddenmethod.filter.enabled = true

3.date格式问题

在Employee中我们存取时间是data形式,在编辑用户的信息时,通过${#dates.format(emp.birth, 'yyyy-MM-dd HH:mm')}来修改了时间的格式到处提交时报格式错,故配置文件中修改Date默认配置

spring.mvc.date-format=yyyy-MM-dd

4.EmbeddedServletContainerCustomizer

在Spring Boot2.0以上配置嵌入式Servlet容器时EmbeddedServletContainerCustomizer类不存在,经网络查询发现被WebServerFactoryCustomizer替代

@Bean  //一定要将这个定制器加入到容器中
public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){
    return new EmbeddedServletContainerCustomizer() {

        //定制嵌入式的Servlet容器相关的规则
        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            container.setPort(8083);
        }
    };
}
@Bean
    public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
        return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
            @Override
            public void customize(ConfigurableWebServerFactory factory) {
                factory.setPort(8081);
            }
        };
    }

猜你喜欢

转载自blog.csdn.net/qq_43274298/article/details/104450530