使用配置类和注解代替web.xml和SpringMVC配置文件的功能

13.1、创建初始化类,代替web.xml

在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,

如果找到的话就用它来配置Servlet容器。 Spring提供了这个接口的实现,名为

SpringServletContainerInitializer,这个类反过来又会查找实现WebApplicationInitializer的类并将配

置的任务交给它们来完成。Spring3.2引入了一个便利的WebApplicationInitializer基础实现,名为

AbstractAnnotationConfigDispatcherServletInitializer,当我们的类扩展了

AbstractAnnotationConfigDispatcherServletInitializer并将其部署到Servlet3.0容器的时候,容器会自动发现它,并用它来配置Servlet上下文。

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};
  }
   /**
    * 指定DispatcherServlet的映射规则,即url-pattern
    * @return
    */
   @Override
   protected String[] getServletMappings() {
       return new String[]{"/"};
  }
   /**
    * 添加过滤器
    * @return
    */
   @Override
   protected Filter[] getServletFilters() {
       CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
       encodingFilter.setEncoding("UTF-8");
       encodingFilter.setForceRequestEncoding(true);
       HiddenHttpMethodFilter hiddenHttpMethodFilter = newHiddenHttpMethodFilter();
       return new Filter[]{encodingFilter, hiddenHttpMethodFilter};
  }
}

13.2、创建SpringConfig配置类,代替spring的配置文件

@Configuration
public class SpringConfig {
   //ssm整合之后,spring的配置信息写在此类中
}

13.3、创建WebConfig配置类,代替SpringMVC的配置文件

@Configuration
//扫描组件
@ComponentScan("com.atguigu.mvc.controller")
//开启MVC注解驱动
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
   //使用默认的servlet处理静态资源
   @Override
   public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
       configurer.enable();
  }
   //配置文件上传解析器
   @Bean
   public CommonsMultipartResolver multipartResolver(){
       return new CommonsMultipartResolver();
  }
   //配置拦截器
   @Override
   public void addInterceptors(InterceptorRegistry registry) {
       FirstInterceptor firstInterceptor = new FirstInterceptor();
       registry.addInterceptor(firstInterceptor).addPathPatterns("/**");
  }
   //配置视图控制
   /*@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}*/
   //配置异常映射
   /*@Override
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
SimpleMappingExceptionResolver exceptionResolver = new SimpleMappingExceptionResolver();
Properties prop = new Properties();
prop.setProperty("java.lang.ArithmeticException", "error");
//设置异常映射
exceptionResolver.setExceptionMappings(prop);
//设置共享异常信息的键
exceptionResolver.setExceptionAttribute("ex");
resolvers.add(exceptionResolver);
}*/
   //配置生成模板解析器
   @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 templateEngine) {
       ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
       viewResolver.setCharacterEncoding("UTF-8");
       viewResolver.setTemplateEngine(templateEngine);
       return viewResolver;
  }
}

13.4、测试功能

@RequestMapping("/")
public String index(){
return "index";
}

13. 注解配置SpringMVC的更多相关文章

  1. 注解配置springMVC

    在随笔“springMVC项目配置文件”的基础上,进行优化,使用注解配置,控制器类得以简化: 一.注解配置springMVC 1.在HelloController类中,去除实现的Controller接 ...

  2. 注解配置springMvc及向作用域中赋值

    1.在applicationContext.xml中配置包扫描器 <!-- 使用注解配置扫描器 --> <context:component-scan base-package=&q ...

  3. 【SpringMVC】完全注解配置SpringMVC

    创建初始化类,代替web.xml 在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,如果找到的话就用它来 ...

  4. springMVC学习记录2-使用注解配置

    前面说了一下使用xml配置springmvc,下面再说说注解配置.项目如下: 业务很简单,主页和输入用户名和密码进行登陆的页面. 看一下springmvc的配置文件: <?xml version ...

  5. 1-3. SpringBoot基础,Java配置(全注解配置)取代xml配置

    最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持. 这节讲一下SpringBoot的学习必须的一些基础,Java配置.其实在Spring2.0时代就已 ...

  6. spring mvc 第一天【注解实现springmvc的基本配置】

    创建pojo,添加标识类的注解@Controller,亦可添加该Handler的命名空间:设置类的@RequestMapping(value="/hr") 该类中的方法(Handl ...

  7. SpringMVC基础配置(通过注解配置,非xml配置)

    SpringMVC是什么,有多火,我这里就不再啰嗦了,SpringMVC比Struts2好用太多,我在学校的时候私下里两种都接触过,对比之后果断选择了SpringMVC,后来在做Android应用开发 ...

  8. SpringMVC整合mybatis基于纯注解配置

    Mybatis整合Spring配置 第一部分:配置Spring框架 配置SpringMVC的步骤 配置流程图 导入包(哪些包,基本包5个,1日志依赖包,2webmvc支持包)SpringMVC配置 & ...

  9. 关于什么是SpringMVC,和SpringMVC基于xml配置、注解配置、纯注解配置

    首先我们先要了解一下,什么是SpringMVC? SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC子框架,也就是说SpringMVC的相关包都 ...

  10. spring-mvc注解配置小记

    Controller中注解Service时,Service的实现类需加@Service,dao的实现类需加@Repository. 另:配置文件中对应的包也需要扫描到!!! <context:a ...

随机推荐

  1. Dijkstra(迪杰斯特拉)算法C++实现&讲解

    Dijkstra迪杰斯特拉算法及C++实现 Dijkstra算法是典型的最短路径路由算法,用来计算一个节点到其他所有节点的最短路径.算法的基本思想和流程是:1. 初始化出发点到其它各点的距离dist[ ...

  2. TSDB - VictoriaMetrics 技术原理浅析

    版权说明: 本文章版权归本人及博客园共同所有,转载请在文章前标明原文出处( https://www.cnblogs.com/mikevictor07/p/17258452.html ),以下内容为个人 ...

  3. mysql的concat与concat_ws拼接字符串的使用

    concat的使用 可以拼接多个字符 mysql> select concat(name,dept,job) from t1; +-----------------------+ | conca ...

  4. 二进制安装Kubernetes(k8s) v1.22.10 IPv4/IPv6双栈

    二进制安装Kubernetes(k8s) v1.22.10 IPv4/IPv6双栈 Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes二进制安装 后续尽可能第一时间更 ...

  5. Springfox与SpringDoc——swagger如何选择(SpringDoc入门)

    本文分享自天翼云开发者社区@<Springfox与SpringDoc--swagger如何选择(SpringDoc入门)>,作者: 才开始学技术的小白 0.引言 之前写过一篇关于swagg ...

  6. Windows下搭建java环境最新版本jdk运行jar文件

    1:安装JDK(Java Development Kit),链接https://www.oracle.com/java/technologies/downloads/#jdk18-windows下载最 ...

  7. day03-Redis的客户端

    Redis的Java客户端 在Redis官网中提供了各种语言的客户端,地址:Get started using Redis clients | Redis Redis的Java客户端: 1.Jedis ...

  8. 25-tree shaking(树摇)

    const { resolve } = require('path'); const MiniCssExtractPlugin = require('mini-css-extract-plugin') ...

  9. Java代码读取properties配置文件

    读取properties配置文件 package com.easycrud.utils; import java.io.IOException; import java.io.InputStream; ...

  10. 模块 ""element-plus"" 没有导出的成员 "ElMessage"。你是想改用 "import ElMessage from "element-plus"" 吗?

    背景:在使用Element Plus写demo时,导入ElMessage组件出现 [模块 ""element-plus"" 没有导出的成员 "ElMe ...