springMvc笔记

 
第一部分: SpringMVC应用
1.1 SpringMVC简介
 
MVC:model-view-controller,模型视图控制器
model:包含业务模型和数据模型,数据模型用于封装数据,业务模型用于处理业务。
view:通常指的是jsp或html,作用一般是展示数据的,通常视图是依据数据模型创建的。
controller:是应用程序中处理用户交互的部分
 
SpringMVC:是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级web框架,属于SpringFrameWork的后续产品。
它是对servlet的封装,
优势:1)只需要一套注解,就可以让一个简单的java类成为处理请求的处理器,2)支持Restful编程风格的请求。
作用:1)接收请求,2)返回响应,跳转页面
 
1.2. SpringMVC工作流程
 
0
 
1)用户发送请求到前端控制器DispatcherServlet
2)DispatcherServlet收到请求调用处理器映射器HandlerMapping
3)处理器映射器根据请求url找到具体的handler(后端控制器),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet
4)DispatcherServlet调用处理器适配器HandlerAdapter去调用Handler
5)处理器适配器执行Handler
6)Handler执行完成给处理器适配器返回ModelAndView
7)处理器适配器向前端控制器返回ModelAndView(ModelAndView是Spring框架的一个底层对象,包括model和view)
8)前端控制器请求视图解析器ViewResolver去进行视图解析,根据逻辑视图名来解析真正的视图
9)视图解析器向前端控制器返回view
10)前端控制器进行视图渲染,就是将模型数据(ModelAndView对象)填充到Request域
11)前端控制器向用户响应结果
 
1.3. SpringMVC九大组件
 
1.4 请求参数绑定
直接在handler方法中声明形参即可。
1)简单数据类型的参数绑定(八种基本数据类型及其包装类型)
说明:对于布尔类型的参数,请求的参数值为true或false。或者1或0
绑定简单数据类型的参数,只需要直接声明形参即可
(注:形参参数名要和传递的参数名一致,建议使用包装类型,当形参参数名和传递的参数名不一致时,使用@RequestParam注解进行手动映射)
 
2)Pojo类型的参数绑定
直接声明形参即可,类型就是pojo类型,形参名无所谓,但要求传递的参数名必须和pojo的属性名一致,
如果不能够定位数据项,通过属性名+“.”的形式进一步定位
 
3)绑定日期类型的参数(需要配置自定义类型转换器,然后再注册到springContect.xml)
 
1.5 Restful风格的请求支持
SpringMVC使用注解@PathVariable获取Restful风格的请求url中的路径变量
 
1.6 Ajax Json交互
 
json<--------------------------->pojo
@RequestBody<------------>@ResponseBody(使用此注解,不会再走视图处理器,而是直接将数据写入输入流中,等同于Response直接输出数据)
 
第二部分:SpringMVC高级技术
2.1 监听器,拦截器,过滤器对比
1)过滤器Filter
对request请求起到过滤作用,作用在servlet之前
2)监听器Listener
实现了javax.servlet.ServletContextListener接口的服务器端组件,它随web的启动而启动,只初始化一次,然后一直运行监视,随web应用的停止而销毁
作用一:做一些初始化工作,web应用中spring容器的启动ContextLoaderListener
作用二:监听web中的特定事件,HttpSession,ServletRequest创建及销毁,统计在线人数(利用HttpSessionListener)等。
3)拦截器Interceptor
是SpringMVC,Struts等表现层框架自己的,不会拦截jsp/html/image/css/js等,只会拦截访问的控制器方法handler
 
从配置的角度也可以发现:servlet,Filter,Listener是配置在web.xml中的,而Interceptor是配置在表现层框架自己的配置文件中的。
 
拦截时机:
1)在Handler业务逻辑执行之前拦截一次
2)在Handler业务逻辑执行完毕但未跳转页面之前拦截一次
3)在跳转页面之后拦截一次
0
 
拦截器执行流程:
0
 
0
1.7 多部件解析器MultiPartResolver
配置文件上传解析器是,id是固定的multipartResolver
 
1.8 基于flash属性的跨重定向请求数据传递
使用SpringMVC提供的flash属性可以解决重定向参数传递问题
0
 
第三部分:手写SpringMVC框架
springMVC执行的大致原理如下:
 
0
手写LgDispatcherServlet初始化流程如下:
0
第四部分:SpringMVC源码分析
 
第五部分:SSM整合
posted @ 2021-05-08 23:04  冰湖一角  阅读(22)  评论(0编辑  收藏  举报