1 @RequestMapping的请求头限定
限定请求头要有谁
特定的请求头中的值
1.1 通用的限定headers
1.2 特定的限定(值)
Content-Type、Accept
1.2.1 consumes
Content-Type
1.2.2 produces
Accept
2Handler方法的返回值
2.1视图相关
2.1.1void(request和response)
和之前的servlet是一样的
2.1.2ModelAndView
在上面的案例中都已经用烂了
404
1、有没有进入到对应的Handler方法中
2、viewName对应的jsp文件的路径写法 → 以/作为开头
3、jsp文件没有编译(编译路径下看)→ target/artifactId-version目录
2.1.3 String
返回值为字符串仍然可以处理ModelAndView
返回值作为ViewName来使用
Model作为形参
2.1.3.1物理视图名
2.1.3.2逻辑视图名
视图解析器:Handler返回的ViewName去做额外的拼接(字符串的拼接)
prefix:前缀
suffix:后缀
prefix=/WEB-INF/jsp/
suffix=.jsp
return “string”; //最终的viewName → /WEB-INF/jsp/string.jsp
2.2 String作为返回值 → 转发和重定向(请求)
forward:/url
redirect:/url
2.2.1 转发
2.2.2 重定向
2.2.3 不写/的相对路径(了解)
去掉请求url的最后一级,然后在拼接相对路径
2.3 Json(重点)
返回的是Object
Jackson 不需要我们去调用他的方法
@ResponseBody
2.3.1 引入jackson依赖
2.3.2 @ResponseBody
2.3.3 @RestController
2.3.4 注意
返回值的类中要包含无参构造方法、get/set方法
只要使用json工具类,其实都需要注意的点
2.3.5 常用的json数据模型
3 Handler方法的形参
请求参数的封装、请求、响应、cookie、session
3.1 请求参数的封装
3.1.1 直接进行封装
3.1.1.1 基本类型、包装类、字符串
请求参数直接写在形参中
3.1.1.2数组
3.1.1.3Date日期
3.1.1.3.1自定义的转换器
自己决定类型 → 由xxx1类型转换为xxx2类型
何时会使用上转换器
1、转换器完成正确的配置
2、请求参数名和handler方法的形参名一致的前提下,形参的类型又对应了转换器的xxx2
3.1.1.3.1.1转换器
implements Converter
3.1.1.3.1.2 转换器配置
注册为容器中的组件
conversionService配置
3.1.1.4 File文件
文件上传
3.1.1.4.1构造请求
3.1.1.4.2 提供一个multipartResolver组件
3.1.1.4.3 引入依赖
3.1.1.4.4 Handler方法接收文件
3.1.1.4.5 MultipartFile能做什么
获得信息
保存文件到磁盘
3.1.1.4.6 一次上传多个文件
3.1.2 Javabean接收请求参数
javabean中的成员变量名对应请求参数名
3.1.2.1 嵌套javabean
3.1.2.2 javabeanList
3.1.3 小结
直接在handler方法的形参中封装:请求参数名 → 形参名
以Javabean形式封装:请求参数名 → 成员变量名
如果类型不匹配就是用converter
3.2 Post请求的乱码
Filter → CharacterEncodingFilter
web.xml中
3.3 Json参数接收
3.3.1 postman构造json请求
Content-Type:application/json
method:Post
data:json字符串数据
login(User user)
也可以以Map来接收
3.3.2 一个url映射到不同的handler方法上
3.4 其他参数
3.4.1 request和response
直接写在任意handler方法的形参上
3.4.2 Model
String作为返回值
3.4.3 Cookie和Session
3.4.3.1 cookie
3.4.3.2 session
3.4.3.3 浏览器构造cookie