SpringMVC学习视频

Spring MVC

SpringMVC学习视频_第1张图片

1.SpringMVC概述

SpringMVC学习视频_第2张图片

2.SpringMVC HelloWorld

SpringMVC学习视频_第3张图片
SpringMVC学习视频_第4张图片
SpringMVC学习视频_第5张图片
SpringMVC学习视频_第6张图片
SpringMVC学习视频_第7张图片
SpringMVC学习视频_第8张图片

3.使用 @RequestMapping 映射请求

SpringMVC学习视频_第9张图片
SpringMVC学习视频_第10张图片
SpringMVC学习视频_第11张图片
真实路径为 : /hello/SpringMVC

SpringMVC学习视频_第12张图片
SpringMVC学习视频_第13张图片
SpringMVC学习视频_第14张图片
在这里插入图片描述
SpringMVC学习视频_第15张图片
SpringMVC学习视频_第16张图片
SpringMVC学习视频_第17张图片
SpringMVC学习视频_第18张图片
SpringMVC学习视频_第19张图片
SpringMVC学习视频_第20张图片
SpringMVC学习视频_第21张图片
SpringMVC学习视频_第22张图片

4. 映射请求参数 & 请求头

SpringMVC学习视频_第23张图片
SpringMVC学习视频_第24张图片
SpringMVC学习视频_第25张图片
SpringMVC学习视频_第26张图片
SpringMVC学习视频_第27张图片
SpringMVC学习视频_第28张图片

5.处理模型数据

SpringMVC学习视频_第29张图片

处理模型数据的第一种方式:放进 ModelAndView 里面的。
SpringMVC学习视频_第30张图片
SpringMVC学习视频_第31张图片
在 jsp 页面可以使用 ${requestscope.time},来获取域对象。

第二种方式:
SpringMVC学习视频_第32张图片
SpringMVC学习视频_第33张图片
在这里插入图片描述
SpringMVC学习视频_第34张图片

@SessionAttributes(value={"user"}, types={String.class})

SpringMVC学习视频_第35张图片
SpringMVC学习视频_第36张图片
SpringMVC学习视频_第37张图片
SpringMVC学习视频_第38张图片
SpringMVC学习视频_第39张图片
SpringMVC学习视频_第40张图片
中间的第二步是 SpringMVC 自动帮我们弄的。
下面是源代码分析

/**
	 * 运行流程:
	 * 1. 执行 @ModelAttribute 注解修饰的方法: 从数据库中取出对象, 把对象放入到了 Map 中. 键为: user
	 * 2. SpringMVC 从 Map 中取出 User 对象, 并把表单的请求参数赋给该 User 对象的对应属性.
	 * 3. SpringMVC 把上述对象传入目标方法的参数. 
	 * 
	 * 注意: 在 @ModelAttribute 修饰的方法中, 放入到 Map 时的键需要和目标方法入参类型的第一个字母小写的字符串一致!
	 * 
	 * SpringMVC 确定目标方法 POJO 类型入参的过程
	 * 1. 确定一个 key:
	 * 1). 若目标方法的 POJO 类型的参数木有使用 @ModelAttribute 作为修饰, 则 key 为 POJO 类名第一个字母的小写
	 * 2). 若使用了  @ModelAttribute 来修饰, 则 key 为 @ModelAttribute 注解的 value 属性值. 
	 * 2. 在 implicitModel 中查找 key 对应的对象, 若存在, 则作为入参传入
	 * 1). 若在 @ModelAttribute 标记的方法中在 Map 中保存过, 且 key 和 1 确定的 key 一致, 则会获取到. 
	 * 3. 若 implicitModel 中不存在 key 对应的对象, 则检查当前的 Handler 是否使用 @SessionAttributes 注解修饰, 
	 * 若使用了该注解, 且 @SessionAttributes 注解的 value 属性值中包含了 key, 则会从 HttpSession 中来获取 key 所
	 * 对应的 value 值, 若存在则直接传入到目标方法的入参中. 若不存在则将抛出异常. 
	 * 4. 若 Handler 没有标识 @SessionAttributes 注解或 @SessionAttributes 注解的 value 值中不包含 key, 则
	 * 会通过反射来创建 POJO 类型的参数, 传入为目标方法的参数
	 * 5. SpringMVC 会把 key 和 POJO 类型的对象保存到 implicitModel 中, 进而会保存到 request 中. 
	 * 
	 * 源代码分析的流程
	 * 1. 调用 @ModelAttribute 注解修饰的方法. 实际上把 @ModelAttribute 方法中 Map 中的数据放在了 implicitModel 中.
	 * 2. 解析请求处理器的目标参数, 实际上该目标参数来自于 WebDataBinder 对象的 target 属性
	 * 1). 创建 WebDataBinder 对象:
	 * ①. 确定 objectName 属性: 若传入的 attrName 属性值为 "", 则 objectName 为类名第一个字母小写. 
	 * *注意: attrName. 若目标方法的 POJO 属性使用了 @ModelAttribute 来修饰, 则 attrName 值即为 @ModelAttribute 
	 * 的 value 属性值 
	 * 
	 * ②. 确定 target 属性:
	 * 	> 在 implicitModel 中查找 attrName 对应的属性值. 若存在, ok
	 * 	> *若不存在: 则验证当前 Handler 是否使用了 @SessionAttributes 进行修饰, 若使用了, 则尝试从 Session 中
	 * 获取 attrName 所对应的属性值. 若 session 中没有对应的属性值, 则抛出了异常. 
	 * 	> 若 Handler 没有使用 @SessionAttributes 进行修饰, 或 @SessionAttributes 中没有使用 value 值指定的 key
	 * 和 attrName 相匹配, 则通过反射创建了 POJO 对象
	 * 
	 * 2). SpringMVC 把表单的请求参数赋给了 WebDataBinder 的 target 对应的属性. 
	 * 3). *SpringMVC 会把 WebDataBinder 的 attrName 和 target 给到 implicitModel. 
	 * 近而传到 request 域对象中. 
	 * 4). 把 WebDataBinder 的 target 作为参数传递给目标方法的入参. 
	 */
	@RequestMapping("/testModelAttribute")
	public String testModelAttribute(User user){
		System.out.println("修改: " + user);
		return SUCCESS;
	}

6.视图和视图解析器

SpringMVC学习视频_第41张图片

	
	

	
	
		
		
	

SpringMVC学习视频_第42张图片
SpringMVC学习视频_第43张图片
SpringMVC学习视频_第44张图片
SpringMVC学习视频_第45张图片
SpringMVC学习视频_第46张图片
SpringMVC学习视频_第47张图片

7.RESTful CRUD

8.SpringMVC 表单标签 & 处理静态资源

SpringMVC学习视频_第48张图片
SpringMVC学习视频_第49张图片
SpringMVC学习视频_第50张图片
SpringMVC学习视频_第51张图片

9.数据转换 & 数据格式化 & 数据效验

SpringMVC学习视频_第52张图片
SpringMVC学习视频_第53张图片
SpringMVC学习视频_第54张图片
SpringMVC学习视频_第55张图片

10.处理 JSON : 使用 HttpMessageConverter

SpringMVC学习视频_第56张图片
SpringMVC学习视频_第57张图片
SpringMVC学习视频_第58张图片
SpringMVC学习视频_第59张图片
SpringMVC学习视频_第60张图片

11.国际化

12.文件的上传

13.使用拦截器

SpringMVC学习视频_第61张图片

14.异常处理

15.SpringMVC 运行流程

SpringMVC学习视频_第62张图片

16.在 spring 的环境下使用 SpringMVC

17.SpringMVC 对比 Struts2

你可能感兴趣的:(Spring学习笔记)