做企业网站用什么程序,闵行做网站公司铝棒易站公司,娄底本地做寄生虫网站,湖北网站推广技巧1. Spring MVC 全注解开发 文章目录 1. Spring MVC 全注解开发2. web.xml 文件 的替代2.1 Servlet3.0新特性2.2 编写 WebAppInitializer 3. Spring MVC的配置3.1 Spring MVC的配置#xff1a;开启注解驱动3.2 Spring MVC的配置#xff1a;视图解析器3.3 Spring MVC的配置开启注解驱动3.2 Spring MVC的配置视图解析器3.3 Spring MVC的配置开启默认Servlet处理3.4 Spring MVC的配置视图控制器 view-controller3.5 Spring MVC的配置异常处理器3.6 Spring MVC 的配置拦截器 4. 运行测试5. 总结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 注解表示标记该类是配置类 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*/Overrideprotected Class?[] getRootConfigClasses() {return new Class[]{SpringMvcConfig.class};}/*** 配置过滤器* return*/Overrideprotected 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*/Overrideprotected Class?[] getServletConfigClasses() {return new Class[]{SpringMvcConfig.class};}/*** 用来配置 DispatcherServlet 的 url-pattern/url-pattern*用于配置 DispatcherServlet 的映射路径* return*/Overrideprotected String[] getServletMappings() {return new String[]{/};}
}
3. Spring MVC的配置
命名一个名为 SpringMvcConfig 的类作为 Spring MVC 的配置类。 // 指定该类是一个配置类可以当配置文件使用
Configuration
// 开启组件扫描
ComponentScan(com.rainbow.springmvc.controller)
public class SpringMVCConfig {
}在springmvc.xml 文件中都可以配置什么
* 1.组件扫描
* 2.视图解析器
* 3.静态资源处理 default-servlet-handler
* 4.视图控制器 view-controller
* 5.开启注解驱动
* 6.异常处理器
* 7.拦截器3.1 Spring MVC的配置开启注解驱动
在类上使用 EnableWebMvc 注解表示开启注解驱动。 // 以下相当于是 Springmvc.xml 的配置文件
Configuration // 表示该类是配置类 指定该类是一个配置类可以当配置文件使用
// 开启组件扫描
ComponentScan(com.rainbow.springmvc.controller)
// 开启注解驱动
EnableWebMvc
public class SpringMvcConfig {
3.2 Spring MVC的配置视图解析器 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 {// 以下三个方法合并起来就是开启视图解析器Beanpublic ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {ThymeleafViewResolver resolver new ThymeleafViewResolver();resolver.setTemplateEngine(springTemplateEngine);resolver.setCharacterEncoding(UTF-8);resolver.setOrder(1);return resolver;}Beanpublic SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {SpringTemplateEngine templateEngine new SpringTemplateEngine();templateEngine.setTemplateResolver(iTemplateResolver);return templateEngine;}Beanpublic 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 并且重写以下的方法
Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();
}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 {// 以下三个方法合并起来就是开启视图解析器Beanpublic ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {ThymeleafViewResolver resolver new ThymeleafViewResolver();resolver.setTemplateEngine(springTemplateEngine);resolver.setCharacterEncoding(UTF-8);resolver.setOrder(1);return resolver;}Beanpublic SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {SpringTemplateEngine templateEngine new SpringTemplateEngine();templateEngine.setTemplateResolver(iTemplateResolver);return templateEngine;}Beanpublic 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 处理Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}
}3.4 Spring MVC的配置视图控制器 view-controller
view-controller : 不写对应的 Controller 只需要 html页面就可以访问的配置 。只需要重写 WebMvcConfigurer 接口中的 addViewControllers(ViewControllerRegistry registry) 方法即可。 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 {// 以下三个方法合并起来就是开启视图解析器Beanpublic ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {ThymeleafViewResolver resolver new ThymeleafViewResolver();resolver.setTemplateEngine(springTemplateEngine);resolver.setCharacterEncoding(UTF-8);resolver.setOrder(1);return resolver;}Beanpublic SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {SpringTemplateEngine templateEngine new SpringTemplateEngine();templateEngine.setTemplateResolver(iTemplateResolver);return templateEngine;}Beanpublic 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 处理Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}// 不写对应的 Controller 只需要 html页面就可以访问的配置Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController(/test).setViewName(test);}
}3.5 Spring MVC的配置异常处理器
Spring MVC 的配置异常处理器只需要重写 WebMvcConfigurer 接口中的 configureHandlerExceptionResolvers(ListHandlerExceptionResolver resolvers) 方法即可。 // 配置异常处理器Overridepublic void configureHandlerExceptionResolvers(ListHandlerExceptionResolver 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);}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 {// 以下三个方法合并起来就是开启视图解析器Beanpublic ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {ThymeleafViewResolver resolver new ThymeleafViewResolver();resolver.setTemplateEngine(springTemplateEngine);resolver.setCharacterEncoding(UTF-8);resolver.setOrder(1);return resolver;}Beanpublic SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {SpringTemplateEngine templateEngine new SpringTemplateEngine();templateEngine.setTemplateResolver(iTemplateResolver);return templateEngine;}Beanpublic 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 处理Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}// 不写对应的 Controller 只需要 html页面就可以访问的配置Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController(/test).setViewName(test);}// 配置异常处理器Overridepublic void configureHandlerExceptionResolvers(ListHandlerExceptionResolver 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) 方法即可。 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 {// 以下三个方法合并起来就是开启视图解析器Beanpublic ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {ThymeleafViewResolver resolver new ThymeleafViewResolver();resolver.setTemplateEngine(springTemplateEngine);resolver.setCharacterEncoding(UTF-8);resolver.setOrder(1);return resolver;}Beanpublic SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {SpringTemplateEngine templateEngine new SpringTemplateEngine();templateEngine.setTemplateResolver(iTemplateResolver);return templateEngine;}Beanpublic 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 处理Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}// 不写对应的 Controller 只需要 html页面就可以访问的配置Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController(/test).setViewName(test);}// 配置异常处理器Overridepublic void configureHandlerExceptionResolvers(ListHandlerExceptionResolver 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);}// 配置拦截器Overridepublic 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. 总结 定义配置类用 Configuration 注解进行标注表示标记该类是配置类 WebAppInitializer 这个类就是用来代替 web.xml文件的 SpringMvcConfig 的类作为 Spring MVC 的配置类。 让SpringMVCConfig类实现这个接口WebMvcConfigurer同时重写其中的方法可以配置默认 Servlet 处理以及异常处理器拦截器 在springmvc.xml 文件中都可以配置什么 - 1.组件扫描
- 2.视图解析器
- 3.静态资源处理 default-servlet-handler
- 4.视图控制器 view-controller
- 5.开启注解驱动
- 6.异常处理器
- 7.拦截器 进行了异常处理后拦截器就不起作用了。 6. 最后 “在这个最后的篇章中我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底继续在其他的领域奋斗。感谢你们我们总会在某个时刻再次相遇。”