第127次(SpringMVC)
学习主题:SpringMVC框架
学习目标:
1 掌握springMVC注解
2 掌握springMVC获取参数
1. 注解式开发之annotation-driven解释
(1) mvc注解驱动在哪个文件中配置?
在springmvc.xml文件中配置
(2) 配置mvc注解驱动使用哪个标签?
<mvc:annotation-driven/>
2. 注解式开发之视图解析器
(1) 视图解析器起到什么作用?
将逻辑视图解析为一个具体的视图对象
(2) 视图解析器如何使用?
3. 处理器方法常用参数
(1) 处理器方法的常用参数有哪些?
HttpServletRequest
HttpServletResponse
HttpSession
用于承载数据的Model、Map、ModelMap
请求中所携带的请求参数
(2) SpringMVC控制层常用的承载数据的对象有哪些?
Model、Map、ModelMap
4. 参数接收之逐个接收
(1) 在后端控制器中如何接收前台参数?
1. 逐个接收(涉及注解@RequestParam)
2. 以对象形式整体接收
3. 域属性参数的接收
4. 数组或集合参数的接收
5. restful风格,传参(涉及注解@PathVariable)
6. 接收json字符串(涉及注解@RequestBody,注册mvc注解驱动,导入jackson包)
(2) 在后端控制器中接收前台“age”参数,是否需要手动转换成int类型,为什么?
不需要,springmvc会自动进行类型转换。
5. 参数接收之对象整体接收
(1) 简述以对象形式整体接收参数的步骤?
定义接收参数的类,类中的属性名要和接收的参数的name属性值一致。
(2) 以对象形式整体接收参数有什么要求?
对象的属性名要和接收的参数的name属性值一致。
6. 参数接收之数组或集合接收参数
(1) 请简述用数组或集合接收参数的步骤?
多个参数的name属性都要相同并且和要接收的数组的数组名相同。
(2) 请描述数组和集合接收参数的区别?
数组不需要加注解,集合接收参数需要加上@requestParam注解
7. 参数接收之域属性参数接收及restful风格传参
(1) 域属性参数的接收需要注意什么?
参数的name属性格式应该为 域属性名.域属性的属性名
(2) 什么是restful风格传参?
参数作为路径的一部分。
第128次(springMVC)
学习主题:springMVC
学习目标:
1 掌握springmvc接受json,获取请求头信息
2 掌握springmvc返回值,转发和重定向,文件上传下载
3 掌握springmvc拦截器,自定义拦截器
8. 参数接收之接收json
(1) 如何在后端控制器中接收前台传过来的Json字符串?
在接收参数前加上注解@RequestBody
(2) 如何将页面中的Json对象转换成Json字符串?
JSON.stringify(Json对象)
9. 获取请求头中信息@RequestHeader
(1) 请求头中有哪些常用信息?
host、cookie
(2) @RequestHeader该注解放到什么位置?
形参前。
10. 处理器方法返回值类型String
(1) 处理器方法何时使用String作为返回值类型?
只跳转资源不传递数据。
(2) 如果处理器方法返回值类型为String,默认情况访问该方法会如何跳转?
请求转发。
11. 处理器方法无返回值void
(1) 如果处理器方法无返回值,那么能否进行资源跳转及传递数据,如何实现?
通过response对象。
(2) 何时处理器方法无返回值较合适?
处理异步请求。
12. 处理器方法返回值类型Object
(1) 如何将处理器方法返回值返回到前台?
在方法前添加@ResponseBody注解
13. 请求转发与重定向
(1) 请描述请求转发与重定向区别?
请求转发:一次请求涉及多个servlet,共享request、response对象中的数据,url地址不变,url为第一次请求的地址。
重定向:多次请求,由服务器响应告诉客户端重定向的地址,不能共享request、response对象中的数据,url地址栏发生变化,url为最后一次请求的地址,重定向可以在不同的服务器下完成。
(2) 在javaEE中请求转发和重定向是如何实现的?
request.getRequestDispatcher("/资源路径").forward();
response.sendRedirect("/虚拟项目名/资源路径");
14. 文件上传
(1) 文件上传时,表单中添加了什么属性,具体值是什么?
enctype="multipart/form-data"
(2) 使用springMVC进行文件上传时,接收文件的参数类型是什么?
MultipartFile
15. 文件下载
(1) 该视频中后端控制器方法的返回值类型是什么?
ResponseEntity<byte[]>
(2) 文件下载时后端控制器中涉及哪些步骤?
1. 指定下载文件
2. 创建字节数组,并且设置数组大小为预估的文件字节数
3. 将输入流中字符存储到缓存数组中
4. 获取要下载文件的文件名,并解决中文乱码
5. 设置http响应头信息,并且通知浏览器以附件的形式进行下载
6. 设置Http响应状态信息
16. 自定义拦截器
(1) 如何自定义拦截器?
(2) 如何注册拦截器?
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/资源路径"/><!--/** 全部拦截-->
<mvc:exclude-mapping path="/资源路径"/><!--放行指定资源-->
<bean class="拦截器的全限定路径"></bean>
</mvc:interceptor>
</mvc:interceptors>
17. 自定义拦截器-添加拦截器后执行流程(对应31-32视频)
(1) 自定义拦截器实现HandlerInterceptor接口需要实现哪些方法,这些方法分别是何时执行?
(2) 程序中有多个拦截器,那么程序的执行流程是怎样的?
先注册先执行,假如有两个先后注册的拦截器1,2,假如都放行则执行顺序为:先执行1的preHandle->再执行2的preHandle->执行处理器方法->2的postHandle->1的postHandle->2的afterCompletion->1的afterCompletion
18. Spring与SpringMVC父子容器关系解释
(1) 简述Spring与SpringMVC的关系?
在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器由上下层关系,目前最常见的一种场景就是在一个项目中引入Spring和SpringMVC这两个框架,那么它其实就是两个容器,Spring是父容器,SpringMVC是其子容器,并且在Spring父容器中注册的Bean对于SpringMVC容器是可见的,而在SpringMVC容器中注册的Bean 对于Spring父容器中是不可见的,也就是子容器可以看见父容器中的注册的Bean,反之就不行。