B02 SpringMVC的请求和相应

SpringMVC的数据响应

1)页面跳转直接返回字符串

通过ModelAndView对象返回

2)回写数据

直接返回字符串

返回对象或集合

SpringMVC获得请求数据

2.1获得请求参数

客户端请求参数的格式是:name=value&name=value.....服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数:

基本类型参数

POJO类型参数

数组类型参数

集合类型参数

2.2获得基本类型参数

Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配。

2.3获得POJ0类型参数

Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。

2.4获得数组类型参数

Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配。

2.5获得集合类型参数

获得集合参数时,要将集合参数包装到一个POJO中才可以。

2.5获得集合类型参数

当使用ajax提交时,可以指定contentType为json形式,那么在方法参数位置使用@RequestBody可以直接接收集合数据而无需使用POJO进行包装。

2.5获得集合类型参数

当使用ajax提交时,可以指定contentType为json形式,那么在方法参数位置使用@RequestBody可以直接接收集合数据而无需使用POJO进行包装。

2.5获得集合类型参数

注意:通过谷歌开发者工具抓包发现,没有加载到jquery文件,原因是SpringMVC的前端控制器DispatcherSeret的url-pattem配置的是/,代表对所有的资源都进行过滤操作,我们可以通过以下两种方式指定放行静态资源:

·在spring-mvc.xml配置文件中指定放行的资源

<mvc:resources mapping="/js/**" location="/js/"/>

使用<mvc:default-servlet-handler/>标签

2.6请求数据乱码问题

当post请求时,数据会出现乱码,我们可以设置一个过滤器来进行编码的过滤。

2.7参数绑定注解@requestParam

当请求的参数名称与Controller的业务方法参数名称不一致时,就需要通过@RequestParam注解显示的绑定。

2.7参数绑定注解@requestParam

注解@RequestParam还有如下参数可以使用:

value:与请求参数名称

required:此在指定的请求参数是否必须包括,默认是true,提交时如果没有此参数则报错defaultValue:当没有指定请求参数时,则使用指定的默认值赋值

2.8获得Restful风格的参数

Restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存机制等。

Restful风格的请求是使用"url+请求方式"表示一次请求目的的,HTTP协议里面四个表示操作方式的动词如下:

GET:用于获取资源

POST:用于新建资源

PUT:用于更新资源

DELETE:用于删除资源

例如:

/user/1GET:得到id=1的user

删除id=1的user/user/1DELETE:

PUT:更新id=1的user/user/1

新增 user/userPOST:

2.8获得Restful风格的参数

上述url地址/user/1中的1就是要获得的请求参数,在SpringMVC中可以使用占位符进行参数绑定。地址/user/1可以写成user/id},占位符(id)对应的就是1的值。在业务方法中我们可以使用@PathVariable注解进行占位符的匹配获取工作。

2.9自定义类型转换器

SpringMVC默认已经提供了一些常用的类型转换器,例如客户端提交的字符串转换成int型进行参数设置。但是不是所有的数据类型都提供了转换器,没有提供的就需要自定义转换器,例如:日期类型的数据就需要自定义转换器。

自定义类型转换器的开发步骤:

定义转换器类实现Converter接口

在配置文件中声明转换器

在<annotation-driven>中引用转换器

2.10获得Servlet相关API

SpringMVC支持使用原始ServletAPI对象作为控制器方法的参数进行注入,常用的对象如下:

HttpSerletRequest

HttpServletResponse

HttpSession

2.11 获得请求头

1.@RequestHeader

使用@RequestHeader可以获得请求头信息,相当于web阶段学习的request.getHeader(name)@RequestHeader注解的属性如下:

value:请求头的名称

required:是否必须携带此请求头

2.11 获得请求头

2.@CookieValue

使用@CookieValue可以获得指定Cookie的值@CookieValue注解的属性如下:value:指定cookie的名称required:是否必须携带此cookie

2.12文件上传

1.文件上传客户端三要素

表单项type="file"

表单的提交方式是post

表单的enctype属性是多部分表单形式,及enctype="multipart/form-data

2.13单文件上传步骤

1

导入fileupload和io坐标

配置文件上传解析器

编写文件上传代码

2.15多文件上传实现

多文件上传,只需要将页面修改为多个文件上传项,将方法参数MultipartFile类型修改为MultipartFile[即可

2.14知识要点

MVC实现数据请求方式

基本类型参数

POJO类型参数

数组类型参数

集合类型参数

MVC获取数据细节

中文乱码问题

和 @PathVariable@RequestParam

自定义类型转换器

获得Servlet相关API

@RequestHeader 和 @CookieValue

文件上传

相关推荐
wellc20 分钟前
SpringBoot集成Flowable
java·spring boot·后端
Hui Baby1 小时前
springAi+MCP三种
java
hsjcjh1 小时前
【MySQL】C# 连接MySQL
java
敖正炀1 小时前
LinkedBlockingDeque详解
java
wangyadong3171 小时前
datagrip 链接mysql 报错
java
untE EADO1 小时前
Tomcat的server.xml配置详解
xml·java·tomcat
ictI CABL1 小时前
Tomcat 乱码问题彻底解决
java·tomcat
敖正炀1 小时前
DelayQueue 详解
java
敖正炀2 小时前
PriorityBlockingQueue 详解
java
shark22222222 小时前
Spring 的三种注入方式?
java·数据库·spring