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. 最后:

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

相关推荐
louisgeek9 分钟前
Java 位运算
java
hweiyu001 小时前
Maven 私库
java·maven
Boilermaker19921 小时前
【Java EE】SpringIoC
前端·数据库·spring
Super Rookie1 小时前
Spring Boot 企业项目技术选型
java·spring boot·后端
写不出来就跑路1 小时前
Spring Security架构与实战全解析
java·spring·架构
ZeroNews内网穿透2 小时前
服装零售企业跨区域运营难题破解方案
java·大数据·运维·服务器·数据库·tcp/ip·零售
sleepcattt2 小时前
Spring中Bean的实例化(xml)
xml·java·spring
lzzy_lx_20892 小时前
Spring Boot登录认证实现学习心得:从皮肤信息系统项目中学到的经验
java·spring boot·后端
Dcs2 小时前
立即卸载这些插件,别让它们偷你的资产!
java
小七mod2 小时前
【Spring】Java SPI机制及Spring Boot使用实例
java·spring boot·spring·spi·双亲委派