SpringMVC

1.SpringMVC是什么?

SpringMVC是一个web层,控制层框架,主要用来负责与客户端交互,业务逻辑的调用,简化开发,实现解耦
可以支持各种视图技术,而不仅仅局限于JSP;
支持各种请求资源的映射策略

2.SpringMVC的组件

a.前端控制器
本质上是一个servlet,相当于一个中转站,所有的访问都会走到这个servlet中,再根据配置进行中转到相应的Handler中进行处理,获取到数据和视图后,再使用响应的视图做出相应。
b.处理器映射器
本质上就是一段映射关系,将访问路径和对应的Handler存储为映射关系,在需要时供前端控制器查看
c.处理器适配器
本质上是一个适配器,可以根据要求找到对应的Handler来运行。前端控制器通过处理器映射器找到对应的Handler信息之后,将请求响应和对应的Handler信息交由处理器适配器处理,处理器适配器找到真正的Handler执行后,将结果即model和view返回给前端控制器
d.视图解析器
本质上也是一种映射关系,可以将视图名称映射到真正的视图地址,前端控制器调用处理器完成后得到model和view,将view信息传给视图解析器得到真正的view
e.视图渲染
本质上就是将handler处理器中返回的model数据嵌入到视图解析器解析后得到的jsp页面中,向客户端做出响应

在这里插入图片描述

3.SpringMVC常用注解

@Controller
@RequestMapping : method={RequestMathod.Get} 指定当前处理器处理那种提交方式提交的请求
params={} 限定当前请求中必须包含指定名称的请求参数才会被当前处理器处理
headers={} 必须包含指定名称的请求头才会被当前处理器处理
@SessionAttributes 将指定属性存入session中
@ExceptionHandler 异常处理
@ResponseBody SpringMVC会自定将返回的对象转化为json格式写出到响应中

4.SpringMVC注解方式实现原理

当服务器启动时,会先加载web.xml,之后通过引入核心配置文件加载springmvc-servlet.xml,就会解析该配置文件
当解析到包扫描时,扫描到指定的包,并将含有@Controller注解的类解析为处理器
如果配置<mvc:annotation-driven/> 就会解析springMVC注解
解析@requestmapping,经指定的地址和当前方法的映射关系进行保存
当用户发出请求访问一个地址时,springmvc寻找该地址映射关系,如果存在,则找到相应处理器相应方法执行,如果找不到,报404

5.SpringMVC中的重定向和转发的实现

**a.请求转发和请求重定向都是web开发中资源跳转的方式
转发: 请求转发是服务器内部的跳转,地址栏不发生变化,只有一个请求响应,可以通过request域传递数据
重定向: 请求重定向是浏览器自动发起对跳转目标的请求,地址栏会发生变化,两次请求响应,无法通过request域传递对象
b.springmvc中实现转发和重定向
request.getRequestDispatcher("").forward(request, response);
response.sendRedirect("");

6.处理器方法支持的参数类型和返回值类型总结

a. 支持的方法参数类型
	i. HttpServletRequest
		代表当前请求的对象
	ii. HttpServletResponse
		代表当前响应的对象
	iii. HttpSession
		代表当前会话的对象
	iv. WebRequest
		SpringMVC提供的对象,相当于是request和session的合体,可以操作这两个域中的属性。
	v. InputStream OutputStream Reader Writer
		代表request中获取的输入流和response中获取的输出流
	vi. 通过@PathVariable @RequestParam声明的方法参数
		@PathVariable可以将请求路径的指定部分获取赋值给指定方法参数
		@RequestParam可以将指定请求参数赋值给指定方法参数,如果不写此注解,则默认会将同名的请求参数赋值给方法参数
	vii. 通过@CookieValue和@RequestHeader声明的方法参数
		@CookieValue可以将请求中的指定名称的cookie赋值给指定方法参数
		@RequestHeader可以将请求参数中的指定名称的头赋值给指定方法参数
	viii. Model和ModelMap和java.util.Map
		向这些Model ModelMap Map中存入属性,相当于向模型中存入数据
	ix. Bean类
		SpringMVC自动将请求参数封装到bean
	x. MultipartFile
		实现文件上传功能时,接收上传的文件对象
	xi. Errors  BindingResult 
		实现数据验证的参数
b. 支持的返回值类型
	i. ModelAndView
		可以返回一个ModelAndView对象,在其中封装Model和View信息
	ii. View
		可以直接返回一个代表视图的View对象
	iii. 字符串
		直接返回视图的名称
	iv. void
		如果返回值类型是void,则会自动返回和当前处理器路径名相同的视图名
	v. 方法被@ResponseBody修饰
		当方法被@ResponseBody修饰时,默认将返回的对象转为json写入输出

除以上之外返回的任何内容都会被当做模型中的数据来处理,而返回的视图名等同于当前处理器路径名**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值