springmvc学习笔记(4)-前端控制器
来源:互联网 发布:建筑设计软件 编辑:程序博客网 时间:2024/06/03 23:00
本文通过前端控制器源码分析springmvc执行过程
1.前端控制器接收请求
调用doDispatch
方法
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServletRequest processedRequest = request; HandlerExecutionChain mappedHandler = null; boolean multipartRequestParsed = false; 。。。。。}
2.前端控制器调用HandlerMapping
(处理器映射器)根据url查找Handler
// 确定当前请求的处理程序mappedHandler = getHandler(processedRequest);
/***返回该请求的HandlerExecutionChain。* <p>按顺序尝试处理所有处理程序的映射。* @param请求当前HTTP请求* @返回HandlerExecutionChain,如果没有找到处理程序,则返回{@code null}*/ protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception { for (HandlerMapping hm : this.handlerMappings) { if (logger.isTraceEnabled()) { logger.trace( "Testing handler map [" + hm + "] in DispatcherServlet with name '" + getServletName() + "'"); } HandlerExecutionChain handler = hm.getHandler(request); if (handler != null) { return handler; } } return null; }
3.调用处理器适配器执行Handler,得到执行的结果ModelAndView mv
在doDispatch
方法中
// 实际上调用处理程序.mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
4.视图渲染,将model数据填充到request域
doDispatch
->processDispatchResult
->render
在render
方法中,视图解析得到view
// 我们需要解析视图名称.view = resolveViewName(mv.getViewName(), mv.getModelInternal(), locale, request);
调用view的渲染方法,将model数据填充到request域
在render
方法中,调用View
接口的render
方法
view.render(mv.getModelInternal(), request, response);
程序我也没细读,感觉分析比较浅,很多还没弄懂,等我系统阅读源码后会整理一篇好点的。
阅读全文
0 0
- springmvc学习笔记(4)-前端控制器
- springmvc学习笔记(4)-前端控制器
- SpringMvc学习笔记(二)SpringMvc控制器
- SpringMVC前端控制器-----DispatcherServlet
- springmvc前端控制器匹配
- Springmvc前端控制器配置
- 设计模式学习笔记--前端控制器模式
- springMVC学习笔记三(controller控制器)
- SpringMVC学习(01)--前端控制器DispatcherServlet的初始化
- J2EE系列之SpringMVC学习笔记(二)--SpringMVC控制器
- J2EE系列之SpringMVC学习笔记(三)--SpringMVC控制器
- J2EE系列之SpringMVC学习笔记(四)--SpringMVC控制器
- SpringMVC-前端控制器源码分析
- springmvc入门-前端控制器配置
- springmvc前端控制器的配置
- springMVC前端控制器路径问题
- springmvc前端控制器的配置
- Spring 学习笔记4—— SpringMVC的控制器与View简单demo
- __packed 关键字 的作用
- 本地spark测试tomcat日志处理
- chapter6:概率及朴素贝叶斯--朴素贝叶斯
- android:kotlin语言使用greendao3.0简解
- 【译文】伪标签学习导论
- springmvc学习笔记(4)-前端控制器
- 白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(4):K临近
- 【实践】通用文件系统的quota时间
- 求a的b次方,不用考虑大数问题,不使用库函数
- String类中lastIndexOf()与indexOf()方法的区别
- python ctrl+c 退出while True:
- 【NOIP2017提高A组模拟10.5】Ping
- Java异常:一个线程运行时发生异常会怎样?
- Rust: join,与concat