SpringMVC流程
2021-12-26 22:34:21 72 举报
SpringMVC流程
作者其他创作
大纲/内容
3.返回处理器执行链
1.发送请求
拿到HandlerAdaptergetHandlerAdapter(mappedHandler.getHandler())
红色部分为MVC三大组件
HandlerAdapter处理器适配器
@Controller@RequestMapping@GetMapping@PostMapping@XXXX······
遍历拦截器数组,拿到所有的HandlerInterceptor,执行对应阶段的方法,成功返回true放行,失败返回false拦截
7.返回ModelAndView
HandlerExecutionChain-HandlerInterceptor-HandlerInterceptor-Handler
HandlerMapping处理器映射器
获取视图名称ModelAndView : : getViewName()
getMethodArgumentValues()方法:就是从request中获取到对应的参数,方法较深,会判断对应的注解判断参数类型(@RequestParam、@PathVariable)等获取注入的参数doInvoke():方法通过反射执行方法,其中,getBridgedMethod()方法返回一个Method bridgedMethod 即我们将执行的方法,getBean() 方法返回对应的 Controller 对象
客户端(浏览器)
1.前端控制器DispatcherServlet作用:接收请求,进行请求分发,处理响应结果2.处理映射器HandlerMapping作用:根据请求URL,找到对应Handler3.处理适配器HandlerAdapter作用:调用处理器(Handler | Controller)4.处理器Handler(即Controller,由我们自己开发)作用:接收用户请求数据,调用业务处理5.视图解析器ViewResolver作用:视图解析6.视图View(由前端人员开发)作用:将数据展现给用户
Hander处理器(即Controller)
DispatcherServelt前端控制器
SpringMVC执行总体流程图
细化流程
以注解方式为例
2.找处理器映射器查找合适的处理器
6.返回ModelAndView对象
10.将Model中的数据填充至View中渲染视图
8.视图解析
处理器映射器、适配器等实例化时间 在 SpringMVC 容器初始化时就会去执行 DispatcherServlet 的initStrategies 方法,将对应的处理器映射器。适配器。视图解析器等全部注入到 IOC 容器中,所有在一开始开在容器中的 handlerMapping 中就能找到对应处理请映射器中有哪些方法,也就是说:URL 确定后,对应的处理器映射器和处理器适配器就已经可以确定了
ViewResolver视图解析器
9.返回View视图对象
原理:拦截器是通过Java反射机制 + JDK动态代理来实现的,因此必须依赖接口(拦截实现接口的类)实现:Spring实现拦截器只需要继承HandlerInterceptorAdapter类,并重写对应的方法应用场景:未登录用户拦截、日志审计等
5.找处理器执行 处理器方法
拦截器补充 :afterCompletion此方法的执行时机是在结果视图创建生成之后,展示到浏览器之前。所以此方法执行时,本次请求 要准备的数 据具已生成完毕,且结果视图也已创建完成,所以我们可以利用此方法进行清理操作
多个拦截器+ 处理器Handler
适配器模式
视图HTML | JSP | FreeMarker等
FrameworkServletdoGet() | doPost() | doPut() | doDelete()
4.找处理器适配器
11.返回响应
拿到 HandlerExecutionChaingetHandler(processedRequest)
0 条评论
下一页