springmvc输入输出流程-创新互联
springmvc作用类似于struts,提供了一个servlet作为处理某些request的总入口,这个servlet就是dispatcherservlet,当server接到client端的request后进入后端容器的处理,比如tomcat,经过一番前期处理,通过web.xml中的mapping配置找到对应的servlet,如果用的是springmvc,则应该使用dispatcherservlet,所以就从这个servlet说起。
10年积累的成都网站制作、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有庆安免费网站建设让你可以放心的选择与我们合作。doService->doDispatch(最重要的一个方法),这个方法主要做了三件事,1.通过request的url、http方法等参数找到对应的handler(用于处理request)和拦截器链,2.对handler进行适配并执行handler的handle方法处理request。3.从第二步得到处理结果,根据结果创建并填充返回的文件然后返回给客户端。具体如下:
(注:springmvc里大量运用了策略模式)
第一件事的实现是首先springmvc会组织一个list来保存一些类(用于根据request的信息查找到对应的handler和拦截器链),之所以是一些而不是一个总的类是因为为了灵活, 用户可以自己定义实现了 HandlerMapping的类,加入list即可,如果用户不定义,系统默认会提供两个(BeanNameUrlHandlerMapping和RequestMappingHandlerMapping),以RequestMappingHandlerMapping为例,它维护了一个requestmapping信息和handler的一个map,在查找handler的过程中,首先是根据request里的信息找到最匹配requestmapping(有用户在定义类和方法以及参数时指定@requestmapping),然后通过requestmapping找到handler(包括要用到的类和对应的方法的信息),最后还要根据request的url信息找到对应的拦截器链,然后返回一个HandlerExecutionChain对象(包含了handler和拦截器链)。
第二件事首先是对handler进行适配,之所以用适配器是因为用户定义controller时可能会定义不止一种controller,比如实现了HttpRequestHandler的controller,实现了Controller的controller,自定义的controller,所以需要相应的适配器去适配成统一的接口(HandlerAdapter,这里以RequestMappingHandlerAdapter(用于自定义controller的适配)为例进行后续的分析),然后就开始调用handle方法处理request了,其实就是调用对应类的对应方法,调用方法第一件事就是得得到方法参数,其中包括1.request中的信息到方法参数的映射,2.他们之间类型的转换,3.格式化,4.验证。这里1是需要参数解析器的,这里的解析器可以自定义一些,如果不定义的话系统也会提供一些默认的,由argumentResolvers维护,除此之外返回值也可以进行映射,returnValueHandlers
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
分享名称:springmvc输入输出流程-创新互联
转载注明:http://ybzwz.com/article/dgcgig.html