Spring MVC 全注解开发

1. Spring MVC 全注解开发

文章目录

  • [1. Spring MVC 全注解开发](#1. Spring MVC 全注解开发)
  • [2. web.xml 文件 的替代](#2. web.xml 文件 的替代)
    • [2.1 Servlet3.0新特性](#2.1 Servlet3.0新特性)
    • [2.2 编写 WebAppInitializer](#2.2 编写 WebAppInitializer)
  • [3. Spring MVC的配置](#3. Spring MVC的配置)
    • [3.1 Spring MVC的配置:开启注解驱动](#3.1 Spring MVC的配置:开启注解驱动)
    • [3.2 Spring MVC的配置:视图解析器](#3.2 Spring MVC的配置:视图解析器)
    • [3.3 Spring MVC的配置:开启默认Servlet处理](#3.3 Spring MVC的配置:开启默认Servlet处理)
    • [3.4 Spring MVC的配置:视图控制器 view-controller](#3.4 Spring MVC的配置:视图控制器 view-controller)
    • [3.5 Spring MVC的配置:异常处理器](#3.5 Spring MVC的配置:异常处理器)
    • [3.6 Spring MVC 的配置:拦截器](#3.6 Spring MVC 的配置:拦截器)
  • [4. 运行测试:](#4. 运行测试:)
  • [5. 总结:](#5. 总结:)
  • [6. 最后:](#6. 最后:)

2. web.xml 文件 的替代

2.1 Servlet3.0新特性

Servlet3.0新特性:web.xml文件可以不写了。

在Servlet3.0的时候,规范中提供了一个接口:

服务器在启动的时候,会自动从容器中找 ServletContainerInitializer接口的实现类,自动调用它的 onStratup() 方法来完成 Servlet 上下文的初始化。

在Spring3.1版本的时候,提供了这样一个类,实现以上的接口:

它的核心方法如下:

可以看到在服务器启动的时候,它会去加载所有实现 WebApplicationInitializer 接口的类:

这个接口下有一个子类是我们需要的 : AbstractAnnotationConfigDispatcherServletInitializer

当我们编写类继承AbstractAnnotationConfigDispatcherServletInitializer之后,web服务器在启动的时候会根据它来初始化Servlet上下文。

2.2 编写 WebAppInitializer

以下这个类就是用来代替web.xml文件的:

注意:加上 @Configuration 注解表示:

标记该类是配置类注意:加上 @Configuration 注解表示:标记该类是配置类

java 复制代码
package com.rainbow.springmvc.config;

import jakarta.servlet.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.filter.HiddenHttpMethodFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;


// 在这个配置类当中编写的其实就是 web.xml 文件中的配置
// 用来标注这个类当中的配置文件
@Configuration  // 表示该类是配置类
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {


    /**
     * Spring 的配置
     * @return
     */
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }


    /**
     * 配置过滤器
     * @return
     */
    @Override
    protected Filter[] getServletFilters() {
       // 配置字符编码过滤器
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        characterEncodingFilter.setForceRequestEncoding(true);
        characterEncodingFilter.setForceRequestEncoding(true);

        // 配置 HiddenHttpMethodFilter ???
        HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter();
        return new Filter[]{characterEncodingFilter,hiddenHttpMethodFilter};
    }

    /**
     * Spring MVC 的配置
     *
     * @return
     */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }


    /**
     * 用来配置 DispatcherServlet 的 <url-pattern></url-pattern>
     *用于配置 DispatcherServlet 的映射路径
     * @return
     */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

3. Spring MVC的配置

命名一个名为 SpringMvcConfig 的类,作为 Spring MVC 的配置类。

java 复制代码
// 指定该类是一个配置类,可以当配置文件使用
@Configuration
// 开启组件扫描
@ComponentScan("com.rainbow.springmvc.controller")
public class SpringMVCConfig {
}
java 复制代码
 在springmvc.xml 文件中都可以配置什么?
* 1.组件扫描
* 2.视图解析器
* 3.静态资源处理 default-servlet-handler
* 4.视图控制器 view-controller
* 5.开启注解驱动
* 6.异常处理器
* 7.拦截器

3.1 Spring MVC的配置:开启注解驱动

在类上,使用 @EnableWebMvc 注解表示:开启注解驱动。

java 复制代码
// 以下相当于是 Springmvc.xml 的配置文件
@Configuration  // 表示该类是配置类, 指定该类是一个配置类,可以当配置文件使用
// 开启组件扫描
@ComponentScan("com.rainbow.springmvc.controller")
// 开启注解驱动
@EnableWebMvc
public class SpringMvcConfig {

3.2 Spring MVC的配置:视图解析器

java 复制代码
import com.rainbow.springmvc.interceptors.MyInterceptor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
import org.thymeleaf.spring6.SpringTemplateEngine;
import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring6.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ITemplateResolver;

import java.util.List;
import java.util.Properties;

// 以下相当于是 Springmvc.xml 的配置文件
@Configuration  // 表示该类是配置类, 指定该类是一个配置类,可以当配置文件使用
// 开启组件扫描
@ComponentScan("com.rainbow.springmvc.controller")
// 开启注解驱动
@EnableWebMvc
public class SpringMvcConfig {

    // 以下三个方法合并起来就是开启视图解析器
    @Bean
    public ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(springTemplateEngine);
        resolver.setCharacterEncoding("UTF-8");
        resolver.setOrder(1);
        return resolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(iTemplateResolver);
        return templateEngine;
    }

    @Bean
    public ITemplateResolver templateResolver(ApplicationContext applicationContext) {
        SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
        resolver.setApplicationContext(applicationContext);
        resolver.setPrefix("/WEB-INF/thymeleaf/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode(TemplateMode.HTML);
        resolver.setCharacterEncoding("UTF-8");
        resolver.setCacheable(false);//开发时关闭缓存,改动即可生效。发布的时候,则将其开启即可
        return resolver;
    }
}

3.3 Spring MVC的配置:开启默认Servlet处理

让SpringMVCConfig类实现这个接口:WebMvcConfigurer

并且重写以下的方法:

java 复制代码
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}
java 复制代码
import com.rainbow.springmvc.interceptors.MyInterceptor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
import org.thymeleaf.spring6.SpringTemplateEngine;
import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring6.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ITemplateResolver;

import java.util.List;
import java.util.Properties;

// 以下相当于是 Springmvc.xml 的配置文件
@Configuration  // 表示该类是配置类, 指定该类是一个配置类,可以当配置文件使用
// 开启组件扫描
@ComponentScan("com.rainbow.springmvc.controller")
// 开启注解驱动
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {

    // 以下三个方法合并起来就是开启视图解析器
    @Bean
    public ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(springTemplateEngine);
        resolver.setCharacterEncoding("UTF-8");
        resolver.setOrder(1);
        return resolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(iTemplateResolver);
        return templateEngine;
    }

    @Bean
    public ITemplateResolver templateResolver(ApplicationContext applicationContext) {
        SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
        resolver.setApplicationContext(applicationContext);
        resolver.setPrefix("/WEB-INF/thymeleaf/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode(TemplateMode.HTML);
        resolver.setCharacterEncoding("UTF-8");
        resolver.setCacheable(false);//开发时关闭缓存,改动即可生效。发布的时候,则将其开启即可
        return resolver;
    }


    // 开启静态资源处理,开启默认的 Servlet 处理

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

3.4 Spring MVC的配置:视图控制器 view-controller

view-controller : 不写对应的 Controller 只需要 html页面就可以访问的配置 。只需要重写 WebMvcConfigurer 接口中的 addViewControllers(ViewControllerRegistry registry) 方法即可。

java 复制代码
import com.rainbow.springmvc.interceptors.MyInterceptor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
import org.thymeleaf.spring6.SpringTemplateEngine;
import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring6.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ITemplateResolver;

import java.util.List;
import java.util.Properties;

// 以下相当于是 Springmvc.xml 的配置文件
@Configuration  // 表示该类是配置类, 指定该类是一个配置类,可以当配置文件使用
// 开启组件扫描
@ComponentScan("com.rainbow.springmvc.controller")
// 开启注解驱动
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {

    // 以下三个方法合并起来就是开启视图解析器
    @Bean
    public ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(springTemplateEngine);
        resolver.setCharacterEncoding("UTF-8");
        resolver.setOrder(1);
        return resolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(iTemplateResolver);
        return templateEngine;
    }

    @Bean
    public ITemplateResolver templateResolver(ApplicationContext applicationContext) {
        SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
        resolver.setApplicationContext(applicationContext);
        resolver.setPrefix("/WEB-INF/thymeleaf/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode(TemplateMode.HTML);
        resolver.setCharacterEncoding("UTF-8");
        resolver.setCacheable(false);//开发时关闭缓存,改动即可生效。发布的时候,则将其开启即可
        return resolver;
    }


    // 开启静态资源处理,开启默认的 Servlet 处理

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }


    // 不写对应的 Controller 只需要 html页面就可以访问的配置

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/test").setViewName("test");
    }
}

3.5 Spring MVC的配置:异常处理器

Spring MVC 的配置:异常处理器只需要,重写 WebMvcConfigurer 接口中的 configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) 方法即可。

java 复制代码
// 配置异常处理器

    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
        // 可以配置多个异常处理器,这是其中的一个
        SimpleMappingExceptionResolver simpleMappingExceptionResolver = new SimpleMappingExceptionResolver();

        // 将异常处理器添加到List集合中
        resolvers.add(simpleMappingExceptionResolver);
        // 配置异常信息,跳转的内容
        // 设置其中的 exceptionMapping 属性
        Properties properties = new Properties();
        properties.setProperty("java.lang.Exception","tip");
        simpleMappingExceptionResolver.setExceptionMappings(properties);

        // 设置其中的 exceptionAttribute 属性,将错误信息添加到请求域当中
        simpleMappingExceptionResolver.setExceptionAttribute("e");

        // 将异常处理器添加到 List 集合中
        resolvers.add(simpleMappingExceptionResolver);

    }
java 复制代码
import com.rainbow.springmvc.interceptors.MyInterceptor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
import org.thymeleaf.spring6.SpringTemplateEngine;
import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring6.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ITemplateResolver;

import java.util.List;
import java.util.Properties;

// 以下相当于是 Springmvc.xml 的配置文件
@Configuration  // 表示该类是配置类, 指定该类是一个配置类,可以当配置文件使用
// 开启组件扫描
@ComponentScan("com.rainbow.springmvc.controller")
// 开启注解驱动
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {

    // 以下三个方法合并起来就是开启视图解析器
    @Bean
    public ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(springTemplateEngine);
        resolver.setCharacterEncoding("UTF-8");
        resolver.setOrder(1);
        return resolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(iTemplateResolver);
        return templateEngine;
    }

    @Bean
    public ITemplateResolver templateResolver(ApplicationContext applicationContext) {
        SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
        resolver.setApplicationContext(applicationContext);
        resolver.setPrefix("/WEB-INF/thymeleaf/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode(TemplateMode.HTML);
        resolver.setCharacterEncoding("UTF-8");
        resolver.setCacheable(false);//开发时关闭缓存,改动即可生效。发布的时候,则将其开启即可
        return resolver;
    }


    // 开启静态资源处理,开启默认的 Servlet 处理

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }


    // 不写对应的 Controller 只需要 html页面就可以访问的配置

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/test").setViewName("test");
    }

    // 配置异常处理器

    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
        // 可以配置多个异常处理器,这是其中的一个
        SimpleMappingExceptionResolver simpleMappingExceptionResolver = new SimpleMappingExceptionResolver();

        // 将异常处理器添加到List集合中
        resolvers.add(simpleMappingExceptionResolver);
        // 配置异常信息,跳转的内容
        // 设置其中的 exceptionMapping 属性
        Properties properties = new Properties();
        properties.setProperty("java.lang.Exception","tip");
        simpleMappingExceptionResolver.setExceptionMappings(properties);

        // 设置其中的 exceptionAttribute 属性,将错误信息添加到请求域当中
        simpleMappingExceptionResolver.setExceptionAttribute("e");

        // 将异常处理器添加到 List 集合中
        resolvers.add(simpleMappingExceptionResolver);

    }
}

3.6 Spring MVC 的配置:拦截器

Spring MVC 的配置:拦截器只需要,重写 WebMvcConfigurer 接口中的 addInterceptors(InterceptorRegistry registry) 方法即可。

java 复制代码
package com.rainbow.springmvc.config;


import com.rainbow.springmvc.interceptors.MyInterceptor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
import org.thymeleaf.spring6.SpringTemplateEngine;
import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring6.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ITemplateResolver;

import java.util.List;
import java.util.Properties;

// 以下相当于是 Springmvc.xml 的配置文件
@Configuration  // 表示该类是配置类, 指定该类是一个配置类,可以当配置文件使用
// 开启组件扫描
@ComponentScan("com.rainbow.springmvc.controller")
// 开启注解驱动
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {

    // 以下三个方法合并起来就是开启视图解析器
    @Bean
    public ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(springTemplateEngine);
        resolver.setCharacterEncoding("UTF-8");
        resolver.setOrder(1);
        return resolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(iTemplateResolver);
        return templateEngine;
    }

    @Bean
    public ITemplateResolver templateResolver(ApplicationContext applicationContext) {
        SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
        resolver.setApplicationContext(applicationContext);
        resolver.setPrefix("/WEB-INF/thymeleaf/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode(TemplateMode.HTML);
        resolver.setCharacterEncoding("UTF-8");
        resolver.setCacheable(false);//开发时关闭缓存,改动即可生效。发布的时候,则将其开启即可
        return resolver;
    }


    // 开启静态资源处理,开启默认的 Servlet 处理

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }


    // 不写对应的 Controller 只需要 html页面就可以访问的配置

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/test").setViewName("test");
    }

    // 配置异常处理器

    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
        // 可以配置多个异常处理器,这是其中的一个
        SimpleMappingExceptionResolver simpleMappingExceptionResolver = new SimpleMappingExceptionResolver();

        // 将异常处理器添加到List集合中
        resolvers.add(simpleMappingExceptionResolver);
        // 配置异常信息,跳转的内容
        // 设置其中的 exceptionMapping 属性
        Properties properties = new Properties();
        properties.setProperty("java.lang.Exception","tip");
        simpleMappingExceptionResolver.setExceptionMappings(properties);

        // 设置其中的 exceptionAttribute 属性,将错误信息添加到请求域当中
        simpleMappingExceptionResolver.setExceptionAttribute("e");

        // 将异常处理器添加到 List 集合中
        resolvers.add(simpleMappingExceptionResolver);

    }

    // 配置拦截器

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        MyInterceptor myInterceptor = new MyInterceptor();
        // 除了 /test 请求路径,不拦截,其他的路径都进行拦截处理
        registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/test");
    }


    /**
     * 在springmvc.xml 文件中都可以配置什么?
     * 1.组件扫描
     * 2.视图解析器
     * 3.静态资源处理 default-servlet-handler
     * 4.视图控制器 view-controller
     * 5.开启注解驱动
     * 6.异常处理器
     * 7.拦截器
     */
}

4. 运行测试:

编写对应测试的 Controller 类

编写对应测试的 Interceptor 类,拦截器类

编写对应测试的 html 前端页面展示:

测试拦截器

测试异常处理器

5. 总结:

  1. 定义配置类,用 @Configuration 注解进行标注,表示:标记该类是配置类

  2. WebAppInitializer 这个类就是用来代替 web.xml文件的:

  3. SpringMvcConfig 的类,作为 Spring MVC 的配置类。

  4. 让SpringMVCConfig类实现这个接口:WebMvcConfigurer,同时重写其中的方法可以,配置(默认 Servlet 处理,以及异常处理器,拦截器)

  5. 在springmvc.xml 文件中都可以配置什么?

java 复制代码
- 1.组件扫描
- 2.视图解析器
- 3.静态资源处理 default-servlet-handler
- 4.视图控制器 view-controller
- 5.开启注解驱动
- 6.异常处理器
- 7.拦截器
  1. 进行了异常处理后,拦截器就不起作用了。

6. 最后:

"在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。"

相关推荐
代码调试39 分钟前
Springboot校园失物招领平台
java·spring boot
camellias_2 小时前
SpringBoot(二十三)SpringBoot集成JWT
java·spring boot·后端
tebukaopu1482 小时前
springboot如何获取控制层get和Post入参
java·spring boot·后端
昔我往昔2 小时前
SpringBoot 创建对象常见的几种方式
java·spring boot·后端
武昌库里写JAVA2 小时前
机器学习笔记2 - 机器学习的一般流程
spring boot·spring·毕业设计·layui·课程设计
q567315232 小时前
用 PHP或Python加密字符串,用iOS解密
java·python·ios·缓存·php·命令模式
灭掉c与java2 小时前
第三章springboot数据访问
java·spring boot·后端
啊松同学2 小时前
【Java】设计模式——工厂模式
java·后端·设计模式
枫叶_v3 小时前
【SpringBoot】20 同步调用、异步调用、异步回调
java·spring boot·后端
鸣弦artha3 小时前
蓝桥杯——杨辉三角
java·算法·蓝桥杯·eclipse