范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SpringMVC执行流程

  1.SpringMVC执行流程分析图
  例子
  (1)创建 HaloHandler  package com.li.web.debug; import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; /** * @author 李 * @version 1.0 */@Controllerpublic class HaloHandler {    //编写方法,响应请求,返回一个 ModelAndView对象    @RequestMapping(value = "/debug/springmvc")    public ModelAndView halo(HttpServletRequest request, HttpServletResponse response) {        ModelAndView modelAndView = new ModelAndView();        //对应到 WEB-INF/pages/ok.jsp (ok的前后缀是你在视图解析器中配置的前后缀)        modelAndView.setViewName("ok");        //在model中放入数据 k-v,ModelAndView的属性也会被springmvc放入到request域中        modelAndView.addObject("name", "齐天大圣");        return modelAndView;    }}
  (2)创建ok.jsp,作为响应后跳转的页面  <%@ page contentType="text/html;charset=UTF-8" language="java" %>    ok

进入到ok页面

name-${requestScope.name}

2.源码debug   我们以上述代码为例子进行源码分析。   (1)在 DispatcherServlet 的 doService 方法中打上断点,在浏览器中访问目标方法,可以看到光标跳转到断点处:当请求发送到服务器时,tomcat 将 http 请求包装成 request 对象,前端控制器 DispatcherServlet 使用 doService() 方法接收这个 request 对象。   (2)点击 step over 前进,可以看到这里的 getWebApplicationContext() 就是 spring 容器对象。也就是说,当接收到url请求的时候,前端控制器就会进行spring 容器的初始化,将各种 bean 放入到容器中。   (3)点击 step over,在经过一系列处理之后调用了 doDispatch() 方法。这是一个核心的方法。   (4)点击 step into,进入 doDispatch() 方法,该方法中首先定义了一个处理器执行链,它用于存放拦截器(多个)和目标 Handler。然后定义了ModelAndView 对象,用于存放视图信息和数据。   执行下面的语句后,就通过映射拿到了处理器执行链 HandlerExecutionChain 的目标 Handler 和拦截器链   (5)点击 step over,跳到如下:获取适配器,包含要执行的目标 Handler   (6)点击 step over,跳到如下:调用 handle() 方法,进行反射调用目标 Handler。   (7)点击 step into,进入到 handle 方法中调用的 handleInternal() 方法,handleInternal() 方法中反射调用了目标 Handler的方法,然后返回视图对象。   (8)在目标方法中打上断点,点击 resume 进入目标方法   (9)点击 step over,ModelAndView 对象返回给适配器。   (10)然后返回到第7步的方法中,因此第7步中返回的视图就是目标方法操作后返回的视图对象   (11)继续一直点击 step over,方法 return 返回到第6步,将获取的视图对象返回给前端控制器。   (12)点击 step over,在前端控制器的 doService 方法中执行如下语句,processDispatchResult() 方法对前面返回的视图进行解析。   (13)step into 进入processDispatchResult 方法,该方法调用 render() 进行渲染。   (14)render() 方法从 ModelAndView 对象中得到视图名称 viewName,如果 viewName 不为空,就进行视图解析。   resolveViewName() 方法进行视图解析,然后返回 view 给前端控制器。 @Nullableprotected View resolveViewName(String viewName, @Nullable Map model, Locale locale, HttpServletRequest request) throws Exception { if (this.viewResolvers != null) { for (ViewResolver viewResolver : this.viewResolvers) { View view = viewResolver.resolveViewName(viewName, locale); if (view != null) { return view; } } } return null;}   (15)返回前端控制器之后,又调用 View的 render() 方法进行视图的渲染。   注意和前端控制器的 render 方法区分   View 的 render() 方法: @Overridepublic void render(@Nullable Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { if (logger.isDebugEnabled()) { logger.debug("View " + formatViewName() + ", model " + (model != null ? model : Collections.emptyMap()) + (this.staticAttributes.isEmpty() ? "" : ", static attributes " + this.staticAttributes)); } Map mergedModel = createMergedOutputModel(model, request, response); prepareResponse(request, response); //渲染合并输出模型 renderMergedOutputModel(mergedModel, getRequestToExpose(request), response);}   renderMergedOutputModel() 方法通过请求转发跳转到相应页面:   (16)最后 tomcat 返回 http响应,浏览器显示页面   3.练习将之前的 SpringMVC 异常处理相关代码和案例写一遍 简述原生的 SpringMVC 执行流程,并画出示意图 debug SpringMVC 的执行流程源码,加深理解

县政府党组理论学习中心组举行第10次集体学习红网嘉禾分站(记者袁水清通讯员马玉松王淑云)10月16日,县政府党组理论学习中心组2022年第10次集体学习会召开,县委副书记县长袁章中主持会议,县领导肖亮李进勇杨漾肖崇慧文秋等参农村为啥越来越火?不少农民秋收后花费10万添大件,又是咋回事?这两年,随着乡村振兴,农村越来越火。有不少人返乡创业,其中不乏意气风发的年轻人。同时,古老的乡村除了传统的农业种植和养殖,也逐渐衍生出旅游民宿等新行业,且财富效应渐渐显现。城乡差别未来怎么干?看懂二十大报告中的这些关键词16日,中国共产党第二十次全国代表大会在京开幕,习近平代表第十九届中央委员会向大会作报告。未来怎么干?从二十大报告中的一组关键词看明白中心任务从现在起,中国共产党的中心任务就是团结交广会客厅中国交通这十年铁龙奔驰!铁路跑出乡村振兴加速度高处远方是人们求索之境。在中国广袤的大地上,纵横交错的交通网络,既高又远。路在脚下,那高且远的境地,关照未来,也一样关照你。人民对美好生活的向往就是我们的奋斗目标。中国交通广播交广钟华论我将无我,不负人民十月的阳光,洒向丰收的大地。每一份喜悦,都辉映着充满希望的中国每一个期许,都澎湃着开创未来的力量。在民族复兴的漫漫征途上,我们将迎来新的历史坐标。中国共产党第二十次全国代表大会将全海外华侨华人祖国十年非凡成就鼓舞人心海外华侨华人昨天(10月16日)收看了中国共产党第二十次全国代表大会开幕的电视直播,他们表示,祖国在过去十年取得的伟大成就,让他们倍感骄傲备受鼓舞。他们将与祖国同呼吸共命运,为实现二十大代表风采国有企业奋斗者群像近期,中央媒体持续播发党的二十大代表风采报道,其中部分代表来自国有企业改革发展科技创新工程建设群众服务等一线。小新为您摘要梳理,展现这些代表砥砺奋进新征程建功筑梦新时代的奋斗者群像外媒海淘韩货订单去年增幅创新高据韩联社10月17日报道,韩国海关17日向国会企划财政委员会提交的一份资料显示,2021年境外消费者海淘韩货的订单超过4000万笔,达到4049。7万笔,比上年增长50。6,创历史人工心脏瓣膜估值玄学一个健世科技竟然等于TAVR三巨头之和很多人把当下的中国生物科技产业,比作20世纪初的互联网。过去二十年,在资本的扶持下,中国的互联网行业坐上时光机,阿里腾讯也在这波浪潮下相继从小作坊成长为全球巨头。某种程度上说,现在440亿美元收购推特,埃隆马斯克将如何改变公司?经过几个月的飘忽不定之后,埃隆马斯克似乎正在着手以440亿美元收购推特!如果交易成功,下一个大问题是他将如何改变公司?马斯克对推特的未来没有一个确定的目标,但如何打造一个科技企业的门店开业才4天就获雷军投资,这家公司是什么来头?天下网商王诗琪编辑徐艺婷小米生态链军团再添新员,这一次是一扇门,在天猫旗舰店的售价10999元起。近日,智能门品牌云鹿官宣完成两轮融资,总额近亿元,投资方包括雷军的顺为资本和小米集
右侧将至?忆苦思甜,从艰难时期展望未来慢富实验室小博说近期不少小伙伴表示,自己进入市场比较晚,2021年初才入市,但是一路投资总觉得被针对了,好像怎么买基收益都不及预期,印象里还是确有其事?老规矩,咱们慢富实验室开工01回顾历史唐朝时期我国东北地区有个极为先进的渤海国建立之谜?发现爱新觉罗家族的真实历史解密大清皇族八百年(连载之十八)从前面的文章中,我们可以得知,肃慎族系在周代时就与中原王朝建立了密切的联系,但这种联系,主要是以进贡为主,文化上的交流并不姜昆50岁那年,不顾妻子反对收养的男孩儿,如今成了夫妻俩的骄傲2007年,是郭德纲走红的第三年,有段时间,在纲丝(郭德纲粉丝)中间,疯传着这样一个消息,说姜昆在政协提案取缔小剧场。人在美国的姜珊,在网上看到后,心里连说父亲糊涂,可是当她搜到原惨遭逆转!普尔364,汤普森223,怀斯曼尴尬,勇士输球也有收获北京时间12月8日,NBA常规赛勇士客场挑战爵士,库里维金斯和追梦格林缺阵,不得不说勇士心真大,在冲击排名的关键节骨眼上,居然还敢大量轮休主力,爵士这边则是马尔卡宁和康利打不了。首身份证实名制查询实名认证证明用户的真实身份,同时也能保障所有用户的合法权益实名认证有利于确定身份,让商家和客户之间彼此了解和交流,有利于网络商城的开展,避免了一些不法分子在网络上欺骗消费者。在网络张学良长女张闾瑛,被问及为何不嫁给孔家,她直言要嫁就嫁布衣张闾瑛是张学良的长女,有人问及她的婚事你为何不嫁给孔家呢?他可是孔夫子的后代,许多人想嫁还没机会呢!张闾瑛高傲地回答我才不嫁给那样的纨绔子弟呢,即使他门第再高又如何,又不是凭他自己腐团儿新照片曝光!水晶足真的别致,穿15cm高跟鞋很敬业最近这段时间,玩家关注比较多的就是神器皮肤的第二款,上官婉儿的万象笔皮肤。作为一款国防大制作皮肤,这款皮肤在设计方面还是有很多创新的。比如说上官婉儿之前给人的感觉就是清冷的侠客,尤苍井空参演的电影,我猜你一定没看过提起苍井空,小伙伴们先想到什么呢?关于苍老师的作品咳咳!某些小伙伴早就耳濡目染,具体详情就不介绍了,此处省略一万字具体请自行脑补。今天介绍的当然不是某种电影(捂脸),毕竟还许多读者电影天之书情节如此之烂超出想象刷新三观今天晚上看见电影天之书评分还挺高,打开看了,看的我是气血上涌,想把电视砸了,这剧的编剧一定是个傻子吧。太二了。监制钱是白拿的吧。这我今年看过最烂的片子。我耐着性子看完。我家人说我是这世间最不该辜负的人是父母大家好,我是木木,一个普通的80后程序媛,一个新手写作小白,希望通过努力成为更好的自己。今天我想聊聊父母这个话题。(图片来源网络,侵权请联系删除)都说养儿方知父母恩,可怜天下父母心生产力iPadPro只能选大容量版本?外置致态TiPlus71002TB硬盘实测前言此前,充电头网已经对苹果新发布的第十代iPad第四代iPadPro进行充电测试并且在进行简单的端口速率测试时,发现新款iPad的端口依旧为USB2。0文件传输规格,对于大型文件