# NOTE_SpringMVC **Repository Path**: vectorx/NOTE_SpringMVC ## Basic Information - **Project Name**: NOTE_SpringMVC - **Description**: 尚硅谷SpringMVC教程丨一套快速上手spring mvc 学习笔记 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2022-03-13 - **Last Updated**: 2023-07-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: Spring-MVC, restful, Java ## README # NOTE_SpringMVC ## 介绍 :sparkles: 【尚硅谷】SpringMVC教程丨一套快速上手spring mvc 学习笔记 ## 更新 - :link: Github:[vectorxxxx/NOTE_SpringMVC: 尚硅谷SpringMVC教程丨一套快速上手spring mvc 学习笔记 (github.com)](https://github.com/vectorxxxx/NOTE_SpringMVC) - :link: Gitee:[NOTE_SpringMVC: 尚硅谷SpringMVC教程丨一套快速上手spring mvc 学习笔记 (gitee.com)](https://gitee.com/vectorx/NOTE_SpringMVC) - :link: GitCode:[VectorUx / NOTE_SpringMVC · GitCode](https://gitcode.net/qq_35925558/NOTE_SpringMVC) - :link: 语雀:[SpringMVC从入门到精通 · 语雀 (yuque.com)](https://www.yuque.com/u21195183/fvry7k) - :link: 博客园:[SpringMVC从入门到精通 - 随笔分类 - VectorX - 博客园 (cnblogs.com)](https://www.cnblogs.com/vectorx/category/2124029.html) - :link: CSDN:[SpringMVC从入门到精通_VectorUx的博客-CSDN博客](https://blog.csdn.net/qq_35925558/category_11683845.html) - :link: 掘金:[SpringMVC从入门到精通 - VectorX的专栏 - 掘金 (juejin.cn)](https://juejin.cn/column/7074468745569108004) **整理不易,还望各位看官一键三连 :heart: :heart: :heart: ** **整理不易,还望各位看官一键三连 :heart: :heart: :heart: ** **整理不易,还望各位看官一键三连 :heart: :heart: :heart: ** :sparkles:下面开始吧~ --- ## 一、目录 ![SpringMVC目录](https://s2.loli.net/2022/04/06/VMKfQJ2GTz3BlgE.png) ### 0、简介 ![00-SpringMVC 简介](https://s2.loli.net/2022/04/06/6ZsxiKhdY3GMrkQ.png) ### 1、@RequestMapping 注解 ![01-@RequestMapping](https://s2.loli.net/2022/04/06/T9LA1YkstNaGCzB.png) ### 2、获取请求参数 ![02-SpringMVC 获取请求参数](https://s2.loli.net/2022/04/06/Oi8heuAx679ZHVJ.png) ### 3、域对象共享数据 ![03-域对象共享数据](https://s2.loli.net/2022/04/06/Z3UvDtkMBeno2ay.png) ### 4、视图 ![04-SpringMVC 视图](https://s2.loli.net/2022/04/06/NWDOaBoTK6fCylg.png) ### 5、RESTful ![05-RESTful](https://s2.loli.net/2022/04/06/6EjpLKS9bNatVCG.png) ### 6、HttpMessageConverter ![06-HttpMessageConverter](https://s2.loli.net/2022/04/06/vJG6Od5CorwegEb.png) ### 7、拦截器和异常处理 ![07-拦截器和异常处理](https://s2.loli.net/2022/04/06/k2mCghJQ96DRz4q.png) ### 8、完全注解开发 ![08-完全注解开发](https://s2.loli.net/2022/04/06/eomNcLKUCaA8k6w.png) ### 9、执行流程 ![09-SpringMVC 执行流程](https://s2.loli.net/2022/04/06/tR6wpBsdvfbiUHe.png) ## 二、配置文件 ### 1、pom.xml ```xml org.springframework spring-webmvc 5.3.16 ch.qos.logback logback-classic 1.2.11 test javax.servlet javax.servlet-api 4.0.1 provided org.thymeleaf thymeleaf-spring5 3.0.15.RELEASE com.fasterxml.jackson.core jackson-databind 2.13.2 commons-fileupload commons-fileupload 1.4 ``` ### 2、web.xml ```xml characterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceResponseEncoding true characterEncodingFilter /* HiddenHttpMethodFilter org.springframework.web.filter.HiddenHttpMethodFilter HiddenHttpMethodFilter /* springMVC org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springMVC.xml 1 springMVC / ``` ### 3、springMVC.xml ```xml ``` ## 三、完全注解开发 `WebInit`——`web.xml` ```java /** * web工程的初始化类,代替web.xml */ 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}; } /** * 指定SpringMVC的映射规则,即url-pattern * * @return */ @Override protected String[] getServletMappings() { return new String[]{"/"}; } /** * 注册过滤器 * * @return */ @Override protected Filter[] getServletFilters() { CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); characterEncodingFilter.setEncoding("UTF-8"); characterEncodingFilter.setForceResponseEncoding(true); HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter(); return new Filter[]{characterEncodingFilter, hiddenHttpMethodFilter}; } } ``` `WebConfig`——`springMVC.xml` ```java /** * SpringMVC的配置类清单 * 1、扫描组件 * 2、视图解析器 * 3、view-controller * 4、default-servlet-handler * 5、MVC注解驱动 * 6、文件上传解析器 * 7、拦截器 * 8、异常处理解析器 */ @Configuration // ========== 1、扫描组件 ========== @ComponentScan("com.vectorx.springmvc.controller") // ========== 5、MVC注解驱动 ========== @EnableWebMvc public class WebConfig implements WebMvcConfigurer { // ========== 2、视图解析器 ========== /** * 生成模板解析器 * * @return */ @Bean public ITemplateResolver templateResolver() { SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); templateResolver.setPrefix("/WEB-INF/templates/"); templateResolver.setSuffix(".html"); templateResolver.setTemplateMode(TemplateMode.HTML); templateResolver.setCharacterEncoding("UTF-8"); return templateResolver; } /** * 生成模板引擎并注入模板解析器 * * @param templateResolver * @return */ @Bean public ISpringTemplateEngine templateEngine(ITemplateResolver templateResolver) { SpringTemplateEngine templateEngine = new SpringTemplateEngine(); templateEngine.setTemplateResolver(templateResolver); return templateEngine; } /** * 生成视图解析器并注入模板引擎 * * @param templateEngine * @return */ @Bean public ViewResolver viewResolver(ISpringTemplateEngine templateEngine) { ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); viewResolver.setOrder(1); viewResolver.setCharacterEncoding("UTF-8"); viewResolver.setTemplateEngine(templateEngine); return viewResolver; } // ========== 3、view-controller ========== @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); } // ========== 4、default-servlet-handler ========== @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } // ========== 6、文件上传解析器 ========== @Bean public MultipartResolver multipartResolver() { MultipartResolver multipartResolver = new CommonsMultipartResolver(); return multipartResolver; } // ========== 7、拦截器 ========== @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new TestInterceptor()).addPathPatterns("/**"); } // ========== 8、异常处理解析器 ========== @Override public void configureHandlerExceptionResolvers(List resolvers) { SimpleMappingExceptionResolver exceptionResolver = new SimpleMappingExceptionResolver(); Properties properties = new Properties(); properties.setProperty(ArithmeticException.class.getCanonicalName(), "error"); exceptionResolver.setExceptionMappings(properties); exceptionResolver.setExceptionAttribute("ex"); resolvers.add(exceptionResolver); } } ``` 整理难免有误,欢迎大家批评指正! --- > 署名 4.0 国际 (CC BY 4.0)。您可以自由地:共享 — 在任何媒介以任何形式复制、发行本作品;演绎 — 修改、转换或以本作品为基础进行创作;在任何用途下,甚至商业目的。只要你遵守许可协议条款,许可人就无法收回你的这些权利。惟须遵守下列条件:署名 — 您必须给出适当的署名,提供指向本许可协议的链接