Spring MVC 处理HTTP请求的整体流程

  DispatcherServlet是一个前端控制器,是整个Spring MVC框架的核心组件。它在接收HTTP请求之后,根据请求调用Spring MVC中的各个组件。

  常用接口及其含义:

  1. Controller:被@Controller修饰的类是控制器类。

  2. HandlerMapping:将用户请求映射到控制器。

  3. HandlerInterceptor:拦截指定格式的URL请求。

  4. ModelAndView:控制器处理完请求后,将视图的逻辑名称和模型数据封装成ModelAndView对象,把该对象交给DispatcherServlet。

  5. ViewResolver:视图解析器,将视图的逻辑名称映射成具体的视图。

  6. View:具体视图。

  Spring MVC 处理HTTP请求的整体流程如下图所示:

  

  1. 用户发送HTTP请求后,该请求交给DispatcherServlet处理。

  2. DispatcherServlet根据请求查找一个或多个HandlerMapping,根据HandlerMapping查找处理请求的Controller。

  3. DispatcherServlet将请求提交给Controller。

  4. Controller调用Service层处理请求。

  5. Controller处理请求后得到ModelAndView对象。

  6. DispatcherServlet查找一个或多个ViewResolver视图解析器。

  7. 视图解析后得到ModelAndView指定的视图。

  8. HTTP响应,View展示数据。

  参考资料

  《MyBatis技术内幕》 P391-393

原文地址:https://www.cnblogs.com/WJQ2017/p/8250716.html

时间: 2024-10-07 22:08:55

Spring MVC 处理HTTP请求的整体流程的相关文章

Spring MVC 执行(请求-->响应)流程

*每日一句:*每天起床之前有两个选择,要么继续趴下做你没做完的梦,要么起床完成你没有完成的梦想.-----** ----- 用户想服务器发型请求,请求被Spring的前端控制器DispatcherServlet截获. DispatcherServlet对请求URL(统一资源定位符)进行解析,得到URI(请求资源标识符).然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象,包括Handler对象以及Handler对象对应的拦截器,这些对象会被封装到一个Han

Spring源码阅读:Spring MVC 如何处理HTTP请求

Spring MVC 对HTTP请求的处理流程 通过之前的源码阅读,知道了ApplicationContext初始的过程,也知道了Spring MVC环境的初始化过程,今天就来了解一下SpringMVC是如何处理HTTP请求的. HTTP请求根据请求方式可以分为GET.POST.PUT.DELETE.OPTIONS.TRACE,最常用的还是GET和POST. Spring对于这几种HTTP请求的处理都是使用了processRequest(req,rep); @Override protected

spring mvc对异步请求的处理

在spring mvc3.2及以上版本增加了对请求的异步处理,是在servlet3的基础上进行封装的. 1.修改web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001

Spring MVC(二) HTTP请求数据的绑定

HTTP请求数据的绑定 通过注解绑定 @RequestParam-->绑定请求参.@RequestHeader-->绑定请求头参数.@CookieValue-->绑定Cookie的值.@PathVariable-->绑定URL中的 示例: @RequestMapping(value="/handle2")public String handle2(@CookieValue("JSESSIONID") String sessionId,@Req

spring mvc处理ios 请求头不全时空参 无法解析的问题处理

ios前端比较懒~囧~~,还有已安装的app用户 ,不愿意更新等问题 导致 请求头无法补全给服务端springmvc发送过来.....悲剧了 只能服务端自己处理这个不全的http请求空参无法解析的问题 尝试处理方法 1     增加springmvc过滤器对请求进行过滤(失败) 测试发现在访问控制层匹配请求地址之前就已经报错,应该是dispatcher那里出了问题 虽然失败, 把代码配置贴出来~~ applicationContext.xml <mvc:interceptors>      

Spring MVC 接受的请求参数

[TOC] 1. 概述 Spring MVC 允许以多种方式将客户端的数据传送到控制器的处理方法中: 查询参数(Query Parameter) 表单参数(Form Parameter) 路径变量(Path Variable) 2. 详解 2.1 处理查询参数 查询参数都是String类型的,但当绑定到方法参数时会转换为相应的类型 在方法中使用 @RequestParam注解,同时可通过defaultValue属性设置当参数不存在时的默认值,如 public List<Spittle> spi

Spring MVC 中 AJAX请求并返回JSON

一.以ModelAndView的方式返回 先看下JavaScript代码: 1 /** 2 * 保存-同步(版本控制库) 3 */ 4 function saveSynchronizedVcHorse(obj) { 5 var ss = $("#SynchronizedSelection div"); 6 var cacheSelectAry = new Array() 7 for(var i = 0; i < ss.length; i ++) { 8 //alert(ss.eq

Spring mvc Interceptor 解决Session超时配置流程

最近公司内部框架中对Session超时这一功能未实现,由于采用iframe结构,Session超时后,当点击左侧系统菜单时,会在iframe的右侧再次弹出登陆框. 该问题是由于没有设置拦截器造成. 添加拦截器思路:当Session超时后,用户点击menu时,需要用Interceptor进行前项拦截,并判断此时session中是否还存在用户信息,如果不存在,将其指定登陆主页面. 如下代码: 1)首先在applicationContext-mvc.xml中加入mvc:interceptor标签. <

Spring mvc 跨域请求

创建类 package Le.log; import java.io.IOException; import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import org.springframework.web.filter.O