• SpringMVC笔记——SpringMVC配置类取代xml配置


    什么是SpringMVC配置

    SpringMVC配置类是一个用来配置SpringMVC的类,它通常包含了一些SpringMVC的基本设置,例如视图解析器、拦截器、消息转换器等。

    1.创建SpringConfig


    @Configuration  
    public class SpringConfig {  
    }
    
    • 1
    • 2
    • 3

    2.创建SpringMVC初始类(代替web.xml)


    初始类需要继承 AbstractAnnotationConfigDispatcherServletInitializer

    public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer {
        /**
         * 指定spring的配置文件
         * @return
         */
        @Override
        protected Class<?>[] getRootConfigClasses() {
            return new Class[]{SpringConfig.class};
        }
    
        /**
         * 指定SpringMVC的配置文件
         * @return
         */
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return new Class[]{WebConfig.class};
        }
    
        /**
         * 指定Mapping映射规则
         * @return
         */
        @Override
        protected String[] getServletMappings() {
            return new String[]{"/"};
        }
        /**
         * 注册过滤器
         * @return Filter[]
         */
        @Override
        protected Filter[] getServletFilters() {
            CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
            characterEncodingFilter.setEncoding("UTF-8");
            characterEncodingFilter.setForceEncoding(true);
            HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter();
            return new Filter[] {characterEncodingFilter, hiddenHttpMethodFilter};
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    3. 创建SpringMVC配置类(代替SpringMVC.xml

    // 标识为配置类  
    @Configuration  
    // 扫描控制层  
    @ComponentScan(basePackages = "com.zxb.controller")  
    public class WebConfig {  
      
        // 配置生成模板解析器  
        @Bean  
        public ITemplateResolver templateResolver() {  
            WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();  
            // ServletContextTemplateResolver需要一个ServletContext作为构造参数,可通过WebApplicationContext 的方法获得  
            ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(  
                    webApplicationContext.getServletContext());  
            templateResolver.setPrefix("/WEB-INF/templates/");  
            templateResolver.setSuffix(".html");  
            templateResolver.setCharacterEncoding("UTF-8");  
            templateResolver.setTemplateMode(TemplateMode.HTML);  
            return templateResolver;  
        }  
      
        //生成模板引擎并为模板引擎注入模板解析器  
        @Bean  
        public SpringTemplateEngine templateEngine(ITemplateResolver templateResolver) {  
            SpringTemplateEngine templateEngine = new SpringTemplateEngine();  
            templateEngine.setTemplateResolver(templateResolver);  
            return templateEngine;  
        }  
      
        //生成视图解析器并未解析器注入模板引擎  
        @Bean  
        public ViewResolver viewResolver(SpringTemplateEngine templateEngihgne) {  
            ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();  
            viewResolver.setCharacterEncoding("UTF-8");  
            viewResolver.setTemplateEngine(templateEngine);  
            return viewResolver;  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
  • 相关阅读:
    2023NOIP A层联测17 黑暗料理
    直流有刷电机开环调速基于STM32F302R8+X-NUCLEO-IHM07M1(二)
    JavaSE之反射
    C++基础语法——类和对象
    2022年陕西省职称申报可以申报什么专业
    Linux:命令行式-离线安装JDK|Tomcat|Nginx组件全流程解析
    系统集成项目管理工程师认证高频考点:编制项目范围管理计划
    想进大厂, Jira 管理平台你会用么?
    测试覆盖率治不好你的精神内耗
    C打印内存16进制
  • 原文地址:https://blog.csdn.net/qq_66250368/article/details/138027842