SpringMVC流程

SpringMVC流程_第1张图片

用户的请求以http形式进入到servlet容器中,servlet容器把请求解析成一个对象,这个对象中包含了解析得到的url,请求头(Header)以及解析完的body数据流,然后进入用户自定义的过滤器(Filter),过滤器可以对request进行处理,Filter处理完后就会进入DispatcherServlet中,他就会进入一些常用的解析器中,比如MultipartResolver,如果进入了这个解析器就代表了他有上传文件,spring会把上传文件截成字节流,把一些字符串以key-value形式读出来封装到对象中以供后续controller来接受。接下来就是通过请求的URL寻找Handler的过程,Handler就是我们定义的controller,通过requestMapping将URL及对应方法注册到HandlerMapping中,如果无法在HandlerMapping中找到对应请求的controller就会报404错误,如果能找到对应的controller就会进入到拦截器(HandlerInterceptor),在拦截器中我们可以做一些打印日志等等的相关操作。紧接着就会进行数据绑定,数据验证,由谁来进行绑定呢?由requestMapping注解的方法里的方法参数进行绑定,返回反射调用的controller方法,这时就进入了具体的方法体中了,就可以调用service操作具体的业务。从controller出来之后就开始创建ModelAndView对象,Model就是数据,View就是模板,如果没有正常执行就会被异常拦截器捕获,如果正常执行就会使用ViewResolver定位资源的位置,找不到就会转发到404页面,找到view之后就会渲染页面,而渲染页面的过程就是将数据进行模板变量替换的过程,数据来自于Request,ModelMap,Session中,渲染之后就通过DispatcherServlet返回,Filter的处理最终通过servlet容器形成响应返回给客户端

你可能感兴趣的:(SpringMVC流程)