1 掌握springMVC注解
2 掌握springMVC获取参
1. 注解式开发之annotation-driven解释
(1) mvc注解驱动在哪个文件中配置?
Springmvc.xml中配置(中央调度器默认调用)
(2) 配置mvc注解驱动使用哪个标签?
2. 注解式开发之视图解析器
(1) 视图解析器起到什么作用?
将处理结果进行渲染和处理,再将结果返回给页面
(2) 视图解析器如何使用?
注册视图解析器
通过propertype添加属性 例:
//将处理结果添加前缀
//将处理结果添加后缀
3. 处理器方法常用参数
(1) 处理器方法的常用参数有哪些?
HttpServletRequest
HttpServletResponse
HttpSession
用来承载数据的Model,Map,ModeMap
请求中携带的请求参数
(2) SpringMVC控制层常用的承载数据的对象有哪些?
用来承载数据的Model,Map,ModeMap
4. 参数接收之逐个接收
(1) 在后端控制器中如何接收前台参数?
注:表单提交路径要为注解的路径
注解方法返回值为ModelAndView 参数名称要与传入参数name名称要一致
就会自动接收参数 或者用@RequestParam(“name值”) string 自定义name
(2) 在后端控制器中接收前台“age”参数,是否需要手动转换成int类型,为什么?
不需要,会自动帮你转化,不需要手动强转
5. 参数接收之对象整体接收
(1) 简述以对象形式整体接收参数的步骤?
1. 创建一个实体类 实体类中的属性名要与传入参数的名字一致
2. 接收的参数修改为实体类的类型
(2) 以对象形式整体接收参数有什么要求?
实体类中的属性名要与传入参数的名字一致
6. 参数接收之数组或集合接收参数
(1) 请简述用数组或集合接收参数的步骤?
数组接收参数
将接收参数的类型改为 数组类型 且数组名称要与传参名称相同
集合接收参数
将接收参数的类型改为 集合类型 且集合名称要与传参名称相同 且在集合形参之前加上参数注解
(2) 请描述数组和集合接收参数的区别?
数组接收参数
将接收参数的类型改为 数组类型 且数组名称要与传参名称相同
集合接收参数
将接收参数的类型改为 集合类型 且集合名称要与传参名称相同 且在集合形参之前加上参数注解
7. 参数接收之域属性参数接收及restful风格传参
(1) 域属性参数的接收需要注意什么?
域属性参数的名称 格式 类名+属性名
(2) 什么是restful风格传参?
参数数据在地址路径中(跟get提交方式类似)
1 掌握springvc接受json,获取请求头信息
2 掌握springmvc返回值,转发和重定向,文件上传下载
3 掌握springmvc拦截器,自定义拦截器
8. 参数接收之接收json
(1) 如何在后端控制器中接收前台传过来的Json字符串?
用对象接收 ,字符串中的键对应对象中的属性(名称相同)
(2) 如何将页面中的Json对象转换成Json字符串?
利用JSON.stringfity(json对象)=json字符串
9. 获取请求头中信息@RequestHeader
(1) 请求头中有哪些常用信息?
Host:请求地址
Cookie:数据
User-Agent:浏览器信息
(2) @RequestHeader该注解放到什么位置?
参数前面
10. 处理器方法返回值类型String
(1) 处理器方法何时使用String作为返回值类型?
当处理器只需要返回视图资源,而不需要跳转界面时(ajax请求)
(2) 如果处理器方法返回值类型为String,默认情况访问该方法会如何跳转?
跳转到发送该请求的视图, 处理器方法的string返回值(返回的是一个地址
如果需要传递数据可以用model,map,modelmap)
11. 处理器方法无返回值void
(1) 如果处理器方法无返回值,那么能否进行资源跳转及传递数据,如何实现?
无返回值,可以进行资源跳转(只能跳转到发送请求的页面)
可以通过传递json格式的字符串给前台,前台通过eval 转化为json格式的数组
(2) 何时处理器方法无返回值较合适?
我们只需要响应数据,不需要转发到指定页面
12. 处理器方法返回值类型Object
(1) 如何将处理器方法返回值返回到前台?
@ResponseBody //将当前方法的返回值放到响应体中,并转换为json格式
Return “aa”
13. 请求转发与重定向
(1) 请描述请求转发与重定向区别?
请求转发:
地址栏不改变 ,请求会重复发送,
数据可以通过request进行传递
一次请求
重定向:
地址栏改变,request不能作为数据流转的载体
两次请求
(2) 在javaEE中请求转发和重定向是如何实现的?
请求转发
Request.getRequestDistcher(“地址”).forward(request,response)
重定向
Response.sendredirect(“地址”)
14. 文件上传
(1) 文件上传时,表单中添加了什么属性,具体值是什么?
enctype="multipart/form-data"
使用springMVC进行文件上传时,接收文件的参数类型是什么?
MultipartFile(接口)
15. 文件下载
(1) 该视频中后端控制器方法的返回值类型是什么?
ResponseEntity<byte[]>
(2) 文件下载时后端控制器中涉及哪些步骤?
public ResponseEntity<byte[]> down() throws Exception {
//指定下载文件,创建读取流
File file = new File("D:/美女.png");
InputStream is = new FileInputStream(file);
//创建字节数组,并且设置数据大小为预估的文件字节数
byte[] body = new byte[is.available()];
//将输入流中字符存储到缓存数组中
is.read(body);
//获取下载显示的文件名,并解决中文乱码
String name = file.getName();
String downLoadFileName = new String(name.getBytes("utf-8"),"ISO-8859-1");
//设置Http响应头信息,并且通知浏览器以附件的形式进行下载
HttpHeaders header = new HttpHeaders();
header.add("Content-Disposition", "attachment;filename="+downLoadFileName);
//设置Http响应状态信息
HttpStatus status=HttpStatus.OK;
ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(body,header,status);
return responseEntity;
}
16. 自定义拦截器
(1) 如何自定义拦截器?
实现HandlerInterceptor接口
注册拦截器 mvc:interceptors
(2) 如何注册拦截器?
17. 自定义拦截器-添加拦截器后执行流程(对应31-32视频)
(1) 自定义拦截器实现HandlerInterceptor接口需要实现哪些方法,这些方法分别是何时执行?
preHandle:在处理器方法执行之前执行
PostHandle:在处理器方法执行之后执行
AfterHandle:在所有工作结束之后,响应给客户端的时候执行
(2) 程序中有多个拦截器,那么程序的执行流程是怎样的?
18. Spring与SpringMVC父子容器关系解释
(1) 简述Spring与SpringMVC的关系?
在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器有上下层关系,目前最常见的一种场景就是在一个项目中映入spring和springMVC这两个框架,那么它其实就是两个容器,Spring是父容器,springMVC是子容器,而在springMVC容器中注册的Bean对于Spring父容器中是不可见的,也就是子容器可以看见父容器中的注册的Bean,反之就不行
。