Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22775
  • 博文数量: 8
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-25 13:56
文章分类
文章存档

2015年(8)

我的朋友

分类: 架构设计与优化

2015-07-27 12:59:26

1、概述

下面这张图是Spring mvc处理请求的整体流程,其中Front controller指的是DispatcherServlet类。

1.客户端所有的请求都会发送到DispatcherServlet,由DispacherServlet处理。

2.DispacherServlet将请求分发到不同的Controller类,由Controller类去处理对应的请求。

3.Controller类将对应的请求处理完后,将处理后对应的model或者视图信息给将DispatcherServlet类。

4.DispatcherServlet将这些信息交由视图模版解析。

5.视图模版解析到的对应视图信息等传给DispacherServlet。

6.最后由DispacherServlet将视图信息推送响应给客户端。

 
如果返回true,则继续往后处理,否则停止方法调用处理。(前置拦截方法执行调用)

 

5.调用HandlerAdapter适配器实例的handler方法去处理当前请求,并返回对应的ModelAndView对象。(调用目标对象的对应方法执行

 

6.调用HandlerExecutionChain实例的applyPostHandler方法,去调用其拦截器的postHandler方法(后置拦截方法)执行。(后置拦截方法执行调用

 

7.调用processDispatchResult方法去处理最后结果(ModelAndView或者异常),该方法调用render方法去渲染解析最后视图。在render方法中首先通过ViewResolver解析器去获取对应的视图名称的视图View对象,最后在调用对应View对象的render方法渲染处理视图,并响应对应结果给客户端。(调用对应View渲染视图

 

3、总结

如上,DispatcherServlet类实际分发处理请求主要有如下几个重要步骤。将HandlerMapping和对应的拦截器包装在一个HandlerExecution实例对象;然后获取该HandlerMapping想匹配的HandlerAdapter适配器;之后调用前置拦截器方法,如果返回true,则调用适配器去处理当前请求,并返回对应的ModelAndView对象;然后在调用后置拦截器方法;最后调用ViewResolver视图解析器解析出对应的视图View对象,并调用View对象去渲染视图,并响应对应结果给客户端。

 

如下列出Spring Mvc处理请求所设计到的重要接口和类。

HandlerMapping接口、HandlerInterceptor拦截器接口和其包装类MappedInterceptor、HandlerExecutionChain类、HandlerAdapter适配器接口、ViewResolver视图解析器接口、View接口、HttpMessageConvert消息转换接口

 

 

java企业级通用权限安全框架源码 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML5

【java框架源码下载】

阅读(1456) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~