1、request 请求到达 dispatchServlet->doService()->doDispatch() 开始处理请求
2、根据doDispatch() 再去调用getHandler() 目的是获取包含 处理器Handler和处理器拦截器 AdapterIntercepers 的处理器拦截链 HandlerExecutionChain
2.1 getHandler(HttpServletRequest request) 通过HandlerMappping对象获取HandlerExecutionChain
3、再通过getHandlerAdapter() 在拦截链中获取handler对应的处理器适配器 handleAdapter
4、ha.handler(processedRequest, response, mappedHandler.getHandler()) 通过handlerAdapter来调用具体的处理器 完成对请求的处理
4.1 hanler 调用 SimpleServletHandlerAdapter.service()->HttpServlet.service()->HttpServlet.service()->doGet(req, resp)
在这里我们发现不只是调用doGet()请求,而是根据请求方法来决定调用doGet()还是doPost(),或者其他
这里发现请求有如下:doGet(req, resp);doHead(req, resp)doPost(req, resp)
doPut(req, resp)doDelete(req, resp)doOptions(req,resp)doTrace(req,resp)
5、根据handler返回的ModleAndView来决定是否渲染试图 ModleAndView 将modle 和 view 封装在一起
6、ViewResolver:视图解析器 负责将处理结果生成view 试图
具体 *** 作:ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View 进行渲染将处理结果通过页面展示给用户
7、view 是spring-mvc 的封装对象,是一个接口
springmvc框架提供了很多的View视图类型,包括:jspview,pdfview,jstlView、freemarkerView、pdfView等。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。
在阅读源码的过程中,发现在启动流程中,用到了适配器模式。。。。
适配器模式:大致对它的理解是这样的,假如现在有一个三方系统M,我们现在有个系统A需要和他交互,那么需要双方定义通信协议。那么问题来了,如果后期我们有很多系统都想于这个M来交互,那么都需要和M去定义通信协议,对于M来说,M会答应么?
解决方案:这个时候,我们来找一个C,来兼容所有的系统,而最后和M交互的只有C,其他系统想要和M交互,那么只需要和C交互在这里C就相当于我们的适配器,也及就是说适配各种系统的调用
在MVC应用程序中使用Jquery当使用Visual Studio项目模版创建新的ASP.NET MVC项目时,它会默认生成使用Jquery需要的所有内容,每个新项目中都回包含一个Scripts文件夹,里面带有很多个js文件。
JQuery核心库是一个名为Jquery-<version>js的文件,所以Jquery的版本是1.7.1,这个文件中包含了JQuery源代码的可注释版本。
精简的JavaScript脚本文件在客户端的行为以及实现的功能与非精简文件一样,然而,由于精简文件叫较小,因此通常都是尽可能的向客户端发送精简文件。
ASP.NET MVC应用程序中默认的布局试图(_Layout.cshtml)通常情况下用下面的脚本标签引用Jquery的精简版本。
在节点中放置脚本
向输出中注入脚本的另一种方式是定义用来防治脚本的Razor节。
可以在引用布局的任何视图中添加脚本姐,用来向该试图的头部注入特定的脚本:Index.cshtml。
按F5运行网站,打开网站首页,添加的jquery.validate.js文件显示在引用JS的最下面了。
Scripts目录下的其他文件
除了Jquery核心库之外,Scripts目录中还包含两个Jquery插件:Jquery UI和Jquery验证,这些扩展增加了Jquery核心库的能力。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)