当前位置: 首页 > news >正文

网站开发手册房产网最新楼盘网

网站开发手册,房产网最新楼盘网,最新电子产品网站模板,wordpress 前台不显示图片SpringMVC中的Handler、HandlerMapping、HandlerAdapter到底是啥 这东西,虽然说和我们的开发没啥关系,尤其是当你用SpringBoot进行开发时,这些接口离你越来越远了。讲实话,要不是这学期扫一眼学校的课件,我都不知道有这东西,这东西本来就是对使用框架进行开发的开发者隐藏…

SpringMVC中的Handler、HandlerMapping、HandlerAdapter到底是啥
这东西,虽然说和我们的开发没啥关系,尤其是当你用SpringBoot进行开发时,这些接口离你越来越远了。讲实话,要不是这学期扫一眼学校的课件,我都不知道有这东西,这东西本来就是对使用框架进行开发的开发者隐藏的。人家好不容易隐藏起来,你却要我们学起来,没事儿干了吧。
下图是网上流传的总览图,来自这篇文章:SpringMVC框架理解

下面通过阅读源码,来学习这些接口都是干啥的
DispathcerServlet#
不管是哪个Web框架,基于什么语言,都会提供一个在整个系统最前端接受用户请求的东西,我们暂且称它“前端调度器”,它会解析用户请求请求,调度你编写的用于接收请求的组件。这样,你可以根据不同的请求编写不同的组件,在SpringMVC里,DispathcerServlet就是前端调度器,Controller就是你编写的处理请求的组件。
SpringMVC也是基于JavaWeb的那套ServletAPI的,所以,它使用一个Servlet用来接收所有请求,它就像一个桥,一头是ServletAPI,一头是SpringMVC,把Servlet世界里的话翻译成框架中的通用语言。
既然是Servlet,那我们就看它的doService方法呗:
解释
@Overrideprotected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception {
logRequest(request);
// … 省略一些代码 …

try {doDispatch(request, response);
}// ... 再省略一些代码 ...}

调用了doDispatch来执行调度。doDispatch里的代码太多了,我做了精简之后还是很多,所以我在代码中写上注释:
解释
@SuppressWarnings(“deprecation”)protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {

HttpServletRequest processedRequest = request;
// 记住它的类型,是一个Handler执行链
HandlerExecutionChain mappedHandler = null;ModelAndView mv = null;
Exception dispatchException = null;// ... 省略代码 ...
try {// processedRequest是经过一定处理的请求对象// 这里是根据请求,获取一个能够处理该请求的Handler对象(实际是一个Handler执行链)// Handler用于对请求进行处理mappedHandler = getHandler(processedRequest);if (mappedHandler == null) {noHandlerFound(processedRequest, response);return;}// 根据Handler对象获取一个HandlerAdapter对象// 具体为啥要这一层,我们稍后会说HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());// 在实际执行对请求的处理之前,先调用Handler的预处理方法`preHandle`if (!mappedHandler.applyPreHandle(processedRequest, response)) {return;}// 实际调用Handler,这里调用的是Handler的适配器对象,HandlerAdapter,它会返回一个ModelAndViewmv = ha.handle(processedRequest, response, // 请求处理完毕,这里调用Handler的`postHandle`方法mappedHandler.applyPostHandle(processedRequest, response, mv);
}
// 记录异常
catch (Exception ex) {dispatchException = ex;
}
catch (Throwable err) {dispatchException = new NestedServletException("Handler dispatch failed", err);
}
// 对上面一同折腾得到的处理结果进行处理,返回给前端
processDispatchResult(processedRequest, response, mapp
http://www.yayakq.cn/news/321373/

相关文章:

  • 免费炫酷网站模板朔州路桥建设有限责任公司网站
  • 网站美工主要工作是什么linux网站架设怎么做
  • 网站怎么做自己站长网站建站 外贸
  • h5网站制作接单织梦网站加网站地图
  • 珠海市城市建设档案馆网站网站开发需要那些人才
  • 如何查看网站开发单位电商网站建设咨询
  • 河南网站营销seo电话广州网络推广选择
  • 外包网站开发 收费江苏工程造价信息网
  • 国外做游戏评测的视频网站宁夏建设厅官方网站
  • 网站开发kxhtml软文案例400字
  • 没有网站怎么做推广网站备案照片要求
  • 简述建设一个商务网站的过程wordpress评论添加表情
  • 建站之星备案济南网站系统优化
  • 漳州网站建设网站制作建设部执业考试中心网站
  • 国内免费的短视频素材网站机顶盒视频网站建设
  • 17一起做网站株洲个人网站不能放广告怎么赚钱
  • wordpress主题仿逛丢昆明网站seo优化
  • 网站建设发展史网站建设培训四川
  • 哪家网站制作 优帮云商城购物平台
  • 网站托管代运营网站源码在哪
  • 上海建材网站建设wordpress 云备份数据库
  • 免费网站app源码包装设计说明模板
  • 网站建议公司营销网站开发isuos
  • 有没有免费网站制作wordpress免签约
  • 怎样用自己的电脑,做网站自己做的视频网站视频加载慢
  • 合肥网站建设平台网站源码什么意思
  • 乐山市做网站的公司网站排名不稳定
  • 深圳网站设计联系电话自己搞个网站
  • 静态网页设计实训报告温州seo优化
  • 潍坊建公司网站wordpress打开好慢