《 Spring Boot从入门到实战(第2版·微课视频版)》 课件 第2章 Spring MVC基础_第1页
《 Spring Boot从入门到实战(第2版·微课视频版)》 课件 第2章 Spring MVC基础_第2页
《 Spring Boot从入门到实战(第2版·微课视频版)》 课件 第2章 Spring MVC基础_第3页
《 Spring Boot从入门到实战(第2版·微课视频版)》 课件 第2章 Spring MVC基础_第4页
《 Spring Boot从入门到实战(第2版·微课视频版)》 课件 第2章 Spring MVC基础_第5页
已阅读5页,还剩67页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章SpringMVC基础学习目的与要求本章重点讲解SpringMVC的工作原理、控制器以及JSON数据交互。通过本章的学习,了解SpringMVC的工作原理,掌握SpringMVC控制器接收请求参数的方式,掌握SpringMVC应用的开发步骤。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录2.1SpringMVC的工作原理2.2SpringMVC的工作环境2.3基于注解的控制器2.4JSON数据交互2.5SpringMVC的基本配置《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.1SpringMVC的工作原理MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器),让这三个部分以最低的耦合进行协同工作,从而提高应用的可扩展性及可维护性。SpringMVC是一款优秀的基于MVC思想的应用框架,它是Spring提供的一个实现了WebMVC设计模式的轻量级Web框架。SpringMVC框架主要由DispatcherServlet、处理器映射、控制器、视图解析器、视图组成,其工作原理,如图2.1所示。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.1SpringMVC的工作原理1.客户端请求提交到DispatcherServlet;2.由DispatcherServlet控制器寻找一个或多个HandlerMapping,找到处理请求的Controller;3.DispatcherServlet将请求提交到Controller;4.Controller调用业务逻辑处理后,返回ModelAndView;5.DispatcherServlet寻找一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图;6.视图负责将结果显示到客户端。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4个SpringMVC接口:DispatcherServlet、HandlerMapping、Controller和ViewResoler。SpringMVC所有的请求都经过DispatcherServlet来统一分发。DispatcherServlet将请求分发给Controller之前,需要借助于SpringMVC提供的HandlerMapping定位到具体的Controller。HandlerMapping接口负责完成客户请求到Controller映射。Controller接口将处理用户请求,这和JavaServlet扮演的角色是一致的。一旦Controller处理完用户请求,则返回ModelAndView对象给DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和视图(View)。从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型(Model)和视图(View)。ViewResolver接口(视图解析器)在Web应用中负责查找View对象,从而将相应结果渲染给客户。2.1SpringMVC的工作原理《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录2.1SpringMVC的工作原理2.2SpringMVC的工作环境2.3基于注解的控制器2.4JSON数据交互2.5SpringMVC的基本配置《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.2.1SpringMVC所需要的JAR包对于SpringMVC框架的初学者,开发SpringMVC应用时,只需要将Spring的4个基础JAR包、SpringCommonsLoggingBridge对应的JAR包spring-jcl-6.0.0.jar、AOP实现JAR包spring-aop-6.0.0.jar以及两个Web相关的JAR包(spring-web-6.0.0.jar和spring-webmvc-6.0.0.jar)复制到Web应用的WEB-INF/lib目录下即可。Tomcat10运行SpringMVC6.0应用时,DispatcherServlet接口依赖性能监控micrometer-observation和micrometer-commons两个包进行请求分发。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.2.2使用Eclipse开发SpringMVC的Web应用【例2-1】Spring

MVC入门程序的实现过程。1.创建Web应用ch2_1并导入JAR包创建Web应用ch2_1,导入如图2.2所示的JAR包。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.在web.xml文件中部署DispatcherServlet

<!--部署DispatcherServlet--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--表示容器在启动时立即加载servlet--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!--处理所有URL--> <url-pattern>/</url-pattern> </servlet-mapping>《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

3.创建Web应用首页<body>

没注册的用户,请<ahref="index/register">注册</a>!<br>

已注册的用户,去<ahref="index/login">登录</a>!</body>《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.创建Controller类在应用ch2_1的src/main/java目录下,创建包controller,并在该包中创建基于注解的名为“IndexController”的控制器类,该类中有两个处理请求方法,分别处理首页中“注册”和“登录”超链接请求。@Controller@RequestMapping("/index")publicclassIndexController{

@RequestMapping("/login") publicStringlogin(){ return"login"; }

@RequestMapping("/register") publicStringregister(){ return"register"; }}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

5.创建SpringMVC的配置文件

<!--使用扫描机制,扫描控制器类--><context:component-scanbase-package="controller"/><mvc:annotation-driven/><!--使用resources过滤掉不需要dispatcherservlet的资源。使用resources时,必须使用annotation-driven,不然resources元素会阻止任意控制器被调用-->

<!--允许css目录下所有文件可见--><mvc:resourceslocation="/css/"mapping="/css/**"></mvc:resources> <!--配置视图解析器--> <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"id="internalResourceViewResolver"><!--前缀--><propertyname="prefix"value="/WEB-INF/jsp/"/><!--后缀-->

<propertyname="suffix"value=".jsp"/></bean>《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

6.应用的其他页面IndexController控制器的register方法处理成功后,跳转到“/WEB-INF/jsp/register.jsp”视图;IndexController控制器的login方法处理成功后,跳转到“/WEB-INF/jsp/login.jsp”视图。因此,应用ch2_1的“/WEB-INF/jsp”目录下应有“register.jsp”和“login.jsp”页面。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

7.发布并运行SpringMVC应用在Eclipse中第一次运行SpringMVC应用时,需要将应用发布到Tomcat。例如,运行ch2_1应用时,可以右击应用名称ch2_1,选择RunAs/RunonServer打开如图2.3所示的对话框,在对话框中单击Finish即完成发布并运行。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.2.3基于Java配置的SpringMVC应用在【例2-1】中,我们使用web.xml和springmvc-servlet.xml配置文件进行Web配置和SpringMVC配置。但SpringBoot推荐使用Java配置的方式进行项目配置,因此,本小节通过一个实例来演示SpringMVC应用的Java配置。【例2-2】Spring

MVC应用的Java配置。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

1.创建应用ch2_2并导入JAR包创建Web应用ch2_2,导入如图2.2所示的JAR包。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.复制JSP和Java文件将应用ch2_1中的JSP和Java文件按照相同目录复制到应用ch2_2中。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

3.创建SpringMVC的Java配置在应用ch2_2的src/main/java目录中,创建名为config的包,在该包中创建SpringMVC的Java配置类SpringMVCConfig。在该配置类中使用@Configuration注解声明该类为Java配置类;使用@EnableWebMvc注解开启默认配置,如ViewResolver;使用@ComponentScan注解扫描注解的类;使用@Bean注解配置视图解析器;该类需要实现WebMvcConfigurer接口来配置SpringMVC。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.创建Web的Java配置在应用ch2_2的config包中,创建Web的Java类WebConfig。该类需要实现WebApplicationInitializer接口替代web.xml文件的配置。实现该接口将会自动启动Servlet容器。在WebConfig类中需要使用AnnotationConfigWebApplicationContext注册SpringMVC的Java配置类SpringMVCConfig,并和当前ServletContext关联。最后,在该类中需要注册SpringMVC的DispatcherServlet。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

5.发布并运行SpringMVC应用右击应用ch2_2,选择RunAs/RunonServer发布并运行应用。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录2.1SpringMVC的工作原理2.2SpringMVC的工作环境2.3基于注解的控制器2.4JSON数据交互2.5SpringMVC的基本配置《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.3.1Controller注解类型在SpringMVC中,使用org.springframework.stereotype.Controller注解类型声明某类的实例是一个控制器。例如,2.2.2节中的IndexController控制器类。别忘了在SpringMVC的配置文件中使用<context:component-scan/>元素(见【例2-1】)或在SpringMVC配置类中使用@ComponentScan(见【例2-2】)指定控制器类的基本包,进而扫描所有注解的控制器类。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.3.2RequestMapping注解类型1.方法级别注解@ControllerpublicclassIndexController{

@RequestMapping(value="/index/login") publicStringlogin(){

return"login"; }

@RequestMapping(value="/index/register") publicStringregister(){ return"register"; }}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.类级别注解@Controller@RequestMapping("/index")publicclassIndexController{

@RequestMapping("/login") publicStringlogin(){ return"login"; }

@RequestMapping("/register") publicStringregister(){ return"register"; }}2.3.2RequestMapping注解类型《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

(1)@GetMapping相当于@RequestMapping(method=RequestMethod.GET),处理get请求。使用@RequestMapping编写是@RequestMapping(value="requestpath",method=RequestMethod.GET);使用@GetMapping可简写为@GetMapping("requestpath")。通常在查询数据时使用。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

(2)@PostMapping相当于@RequestMapping(method=HttpMethod.POST),处理post请求。使用@RequestMapping编写是@RequestMapping(value="requestpath",method=RequestMethod.POST);使用@PostMapping可简写为@PostMapping("requestpath")。通常在新增数据时使用。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

(3)@PutMapping、@PatchMapping相当于@RequestMapping(method=RequestMethod.PUT/PATCH),处理put和patch请求。使用@RequestMapping编写是@RequestMapping(value="requestpath",method=RequestMethod.PUT/PATCH);使用@PutMapping可简写为@PutMapping("requestpath")。两者都是更新,@PutMapping为全局更新,@PatchMapping是对put方式的一种补充,put是对整体的更新,patch是对局部的更新。通常在更新数据时使用。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

(4)@DeleteMapping相当于@RequestMapping(method=RequestMethod.DELETE),处理delete请求。使用@RequestMapping编写是@RequestMapping(value="requestpath",method=RequestMethod.DELETE);使用@PutMapping可简写为@DeleteMapping("requestpath")。通常在删除数据时使用。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.3.3编写请求处理方法1.请求处理方法中常出现的参数类型请求处理方法的参数类型除了ServletAPI参数类型外,还有输入输出流、表单实体类、注解类型、与Spring框架相关的类型等等,这些类型在后续章节中使用时再详细介绍。但特别重要的类型是org.springframework.ui.Model类型,该类型是一个包含Map的Spring框架类型。每次调用请求处理方法时,SpringMVC都将创建org.springframework.ui.Model对象。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.请求处理方法常见的返回类型最常见的返回类型,就是代表逻辑视图名称的String类型,如前面章节中的请求处理方法。除了String类型外,还有Model、View以及其他任意的Java类型。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.3.4Controller接收请求参数的常见方式1.通过实体bean接收请求参数通过一个实体bean来接收请求参数,适用于get和post提交请求方式。需要注意的是,bean的属性名称必须与请求参数名称相同。【例2-3】通过实体bean接收请求参数。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

1)创建应用ch2_3并导入JAR包创建Web应用ch2_3,除导入如图2.2所示的JAR包外,还需要导入Java增强库lombok-1.18.24.jar。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2)创建视图文件在应用ch2_3的/WEB-INF/jsp/目录下有register.jsp、login.jsp和main.jsp文件。<inputtype="text"name="uname"value="${user.uname}"/><inputtype="password"name="upass"/><inputtype="password"name="reupass"/>《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

3)创建POJO实体类@DatapublicclassUserForm{ privateStringuname;//与请求参数名称相同

privateStringupass; privateStringreupass;}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4)创建控制器类在应用ch2_3的src/main/java目录下,创建包controller,并在该包中创建控制器类UserController和IndexController。publicStringregister(UserForm

user,Modelmodel){5)创建Web与SpringMVC的配置类将【例2-2】中应用ch2_2的Web配置类WebConfig和SpringMVC配置类SpringMVCConfig拷贝到应用ch2_3的相同位置。6)发布并运行应用右击应用ch2_3,选择RunAs/RunonServer发布并运行应用。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.通过处理方法的形参接收请求参数通过处理方法的形参接收请求参数,也就是直接把表单参数写在控制器类相应方法的形参中,即形参名称与请求参数名称完全相同。该接收参数方式适用于get和post提交请求方式。publicStringregister(Stringuname,Stringupass,Modelmodel){}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

3.通过@RequestParam接收请求参数通过@RequestParam接收请求参数,适用于get和post提交请求方式。publicStringregister(@RequestParamStringuname,@RequestParamStringupass,Modelmodel){}通过@RequestParam接收请求参数与“通过处理方法的形参接收请求参数”的区别是:当请求参数与接收参数名不一致时,“通过处理方法的形参接收请求参数”不会报400错误,而“通过@RequestParam接收请求参数”会400错误。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.通过@ModelAttribute接收请求参数@ModelAttribute注解放在处理方法的形参上时,用于将多个请求参数封装到一个实体对象,从而简化数据绑定流程,而且自动暴露为模型数据用于视图页面展示时使用。而“通过实体bean接收请求参数”只是将多个请求参数封装到一个实体对象,并不能暴露为模型数据,需要使用model.addAttribute语句才能暴露为模型数据。通过@ModelAttribute注解接收请求参数,适用于get和post提交请求方式。publicStringregister(@ModelAttribute("user")UserFormuser){}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.3.5重定向与转发在SpringMVC框架中,控制器类中处理方法的return语句默认就是转发实现,只不过实现的是转发到视图。//转发到register.jspreturn"register";//转发到一个请求方法(同一个控制器类里,可省略/index/)return"forward:/index/isLogin";//重定向到一个请求方法return"redirect:/index/isRegister";//重定向到一个静态页面return"redirect:/html/my.html";《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.3.5重定向与转发在SpringMVC配置类中,需要实现WebMvcConfigurer的接口方法publicvoidaddResourceHandlers(ResourceHandlerRegistryregistry),示例代码如下:@OverridepublicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){

registry.addResourceHandler("/html/**").addResourceLocations("/html/");}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.3.6应用@Autowired进行依赖注入SpringMVC框架本身就是一个非常优秀的MVC框架,它具有一个依赖注入的优点。可以通过org.springframework.beans.factory.annotation.Autowired注解类型将依赖注入到一个属性(成员变量)或方法,如:@AutowiredpublicUserServiceuserService;在SpringMVC中,为了能被作为依赖注入,服务层的类必须使用org.springframework.stereotype.Service注解类型注明为@Service(一个服务)。另外,在配置类中使用@ComponentScan("基本包")来扫描依赖基本包。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.3.7@ModelAttribute1.绑定请求参数到实体对象(表单的命令对象)@PostMapping("/register")publicStringregister(@ModelAttribute("user")UserFormuser){}上述代码中“@ModelAttribute("user")UserFormuser”语句的功能有两个,一是将请求参数的输入封装到user对象中;一是创建UserForm实例,以“user”为键值存储在Model对象中,与“model.addAttribute("user",user)”语句功能一样。如果没有指定键值,即“@ModelAttributeUserFormuser”,那么创建UserForm实例时,以“userForm”为键值存储在Model对象中,与“model.addAttribute("userForm",user)”语句功能一样。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.注解一个非请求处理方法在控制器类中,被@ModelAttribute注解的一个非请求处理方法方法,将在每次调用该控制器类的请求处理方法前被调用。这种特性可以用来控制登录权限,当然控制登录权限的方法很多,例如拦截器、过滤器等。publicclassBaseController{@ModelAttributepublicvoidisLogin(HttpSessionsession)throwsException{if(session.getAttribute("user")==null){thrownewException("没有权限");}}}publicclassModelAttributeControllerextendsBaseController{}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录2.1SpringMVC的工作原理2.2SpringMVC的工作环境2.3基于注解的控制器2.4JSON数据交互2.5SpringMVC的基本配置《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.4.1JSON数据结构1.对象结构对象结构以“{”开始,以“}”结束。中间部分由0个或多个以英文“,”分隔的key/value对构成,key和value之间以英文“:”分隔。对象结构的语法结构如下:{ key1:value1, key2:value2, …}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.4.1JSON数据结构2.数组结构数组结构以“[”开始,以“]”结束。中间部分由0个或多个以英文“,”分隔的值的列表组成。数组结构的语法结构如下:[ value1, value2, …]《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.4.1JSON数据结构{ "sno":"202402228888",

"sname":"张三", "hobby":["篮球","足球"], "college":{ "cname":"清华大学", "city":"北京" }}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.4.2JSON数据转换为实现浏览器与控制器类之间的JSON数据交互,SpringMVC提供了MappingJackson2HttpMessageConverter实现类默认处理JSON格式请求响应。该实现类利用Jackson开源包读写JSON数据,将Java对象转换为JSON对象和XML文档,同时也可以将JSON对象和XML文档转换为Java对象。

jackson-annotations.jar:JSON转换注解包。

jackson-core.jar:JSON转换核心包。

jackson-databind.jar:JSON转换的数据绑定包。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.4.2JSON数据转换在使用注解开发时,需要用到两个重要的JSON格式转换注解,分别是@RequestBody和@ResponseBody。

@RequestBody:用于将请求体中的数据绑定到方法的形参中,该注解应用在方法的形参上。

@ResponseBody:用于直接返回JSON对象,该注解应用在方法上。【例2-4】JSON数据交互过程。在该实例中,针对返回实体对象、ArrayList集合、Map<String,Object>集合以及List<Map<String,Object>>集合分别处理。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

1.创建应用ch2_4并导入相关的JAR包创建Web应用ch2_4,导入除应用ch2_3的JAR包外,还需将JSON相关的3个JAR包(jackson-annotations-2.14.1.jar、jackson-databind-2.14.1.jar和jackson-core-2.14.1.jar)复制到ch2_4的WEB-INF/lib目录中。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.创建Web和SpringMVC配置类在应用ch2_4的src/main/java目录下,创建名为config的包,并在该包中创建Web配置类WebConfig和SpringMVC配置类SpringMVCConfig。WebConfig的代码与ch2_3应用的相同,不再赘述。在SpringMVCConfig配置类中,需要配置静态资源。@OverridepublicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){

registry.addResourceHandler("/js/**").addResourceLocations("/js/");}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

3.创建JSP页面,并引入jQuery首先从jQuery官方网站/download/下载jQuery插件:jquery-3.6.0.min.js,将其复制到应用ch2_4的webapp/js目录下。然后在JSP页面中,通过<scripttype="text/javascript"src/main/java="js/jquery-3.6.0.min.js"></script>代码将jQuery引入当前页面。在应用ch2_4的webapp目录下创建JSP文件index.jsp,在该页面中使用Ajax向控制器异步提交数据。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.创建实体类@DatapublicclassPerson{ privateStringpname; privateStringpassword; privateIntegerpage;}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

5.创建控制器类在应用ch2_4的src/main/java目录下,创建名为controller的包,并在该包中创建TestController控制器类,在处理方法中使用@ResponseBody和@RequestBody注解进行JSON数据交互。@RequestMapping("/testJson")@ResponseBodypublicList<Map<String,Object>>testJson(@RequestBodyPersonuser){}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

6.测试应用右击应用ch2_4,选择RunAs/RunonServer发布并运行应用。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录2.1SpringMVC的工作原理2.2SpringMVC的工作环境2.3基于注解的控制器2.4JSON数据交互2.5SpringMVC的基本配置《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.5SpringMVC的基本配置SpringMVC的定制配置需要配置类实现WebMvcConfigurer接口,并在配置类使用@EnableWebMvc注解来开启对SpringMVC的配置支持,这样开发者就可以重写接口方法完成常用的配置。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.5.1静态资源配置应用的静态资源(CSS、JS、图片)等需要在JSP等文件中直接访问,这时需要开发者在配置类重写publicvoidaddResourceHandlers(ResourceHandlerRegistryregistry)接口方法来实现。publicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){

registry.addResourceHandler("/html/**").addResourceLocations("/html/");

//addResourceHandler指的是对外暴露的访问路径

//addResourceLocations指的是静态资源存放的位置}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.5.2拦截器配置1.创建自定义拦截器类自定义拦截器类需要实现HandlerInterceptor接口或继承HandlerInterceptorAdapter类。publicclassMyInteceptorimplementsHandlerInterceptor{

//重写preHandle方法在请求发生前执行 //重写postHandle方法在请求完成后执行

《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.5.2拦截器配置2.配置拦截器在配置类中,需要首先配置拦截器bean,然后重写addInterceptors方法注册拦截器。

//配置拦截器Bean @Bean publicMyInteceptormyInteceptor(){ returnnewMyInteceptor(); }

//重写addInterceptors方法注册拦截器 @Override publicvoidaddInterceptors(InterceptorRegistryregistry){

registry.addInterceptor(myInteceptor()).addPathPatterns("/api/**");

}《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.5.3文件上传配置org.springframework.web.multipart.MultipartResolver是一个解析包括文件上传在内的multipart请求接口。从Spring6.0和Servlet5.0+开始,基于ApacheCommonsFileUpload组件的MultipartResolver接口实现类CommonsMultipartResolver被弃用。改用基于Servlet容器的MultipartResolver接口实现类StandardServletMultipartResolver,进行multipart请求解析。在SpringMVC框架中,上传文件时,将文件相关信息及操作封装到MultipartFile接口对象中。因此,开发者只需要使用MultipartFile类型声明模型类的一个属性,即可以对被上传文件进行操作。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

2.5.3文件上传配置在SpringMVC应用中,上传文件时,需要完成以下三点配置或设置:1.在SpringMVC配置文件中,使用Spring的org.springframework.web.multipart.support.StandardServletMultipartResolver类配置一个名为multipartResolver(MultipartResolver接口)的bean,用于文件上传。2.必须将文件上传表单的method设置为post,并将enctype设置为multipart/form-data。只有这种设置,浏览器才能将所选文件的二进制数据发送给服务器。3.需要通过Servlet容器配置启用Servletmultipart请求解析。可以在Web配置类中Servlet声明部分进行配置启用Servletmultipart请求解析。【例2-5】上传多个文件。《SpringBoot从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

1.创建应用ch2_5并导入相关的JAR包创建应用ch2_5,并导入Sp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论