SpringMVC如何处理请求
2016-10-01 11:36
274 查看
从web.xml中 servlet的配置开始, 根据servlet拦截的<url-parttern>,来进行请求转发
1.在客户端发起网站请求(如: localhost:8080/index)。
2.请求被服务器接收到,服务器读取web.xml 配置的<url-parttern>并缓存。
3.查看web.xml配置中是否有符合条件的 Filter过滤器,有则调用过滤器对对象进行处理。
4.处理完成后将需要处理请求的servlet指定为spring的DispatcherServlet。
5.DispatcherServlet 接收到服务器提交的请求,分为两种情况:
1)该请求为网站的第一个请求,DispatcherServlet先调用初始化方法 initStrategies(),
然后调用doService()方法
2)请求不为网站的第一个请求,直接调用doService()方法
6.doService()方法调用 doDispatch()方法,doDispatch()内主要分为如下几步:
1)先通过getHandler获得request中对应的请求handler
mappedHandler = getHandler(processedRequest);
2)通过获得的handler 获得对应的 HandlerAdapter
HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
3) handler 中的设置的拦截器(继承自HandlerInterceptorAdapter)在此处进行调用
if (!mappedHandler.applyPreHandle(processedRequest, response)) {
return;
}
4)执行 handler方法处理请求,并返回一个 ModelAndView 对象
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
5)对 返回的 ModelAndView对象进行处理,返回给客户端,最后调用拦截器的afterCompletion() 方法
processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);
7. 客户端收到返回的响应,将需要的部分在view层进行显示。
1.在客户端发起网站请求(如: localhost:8080/index)。
2.请求被服务器接收到,服务器读取web.xml 配置的<url-parttern>并缓存。
3.查看web.xml配置中是否有符合条件的 Filter过滤器,有则调用过滤器对对象进行处理。
4.处理完成后将需要处理请求的servlet指定为spring的DispatcherServlet。
5.DispatcherServlet 接收到服务器提交的请求,分为两种情况:
1)该请求为网站的第一个请求,DispatcherServlet先调用初始化方法 initStrategies(),
然后调用doService()方法
2)请求不为网站的第一个请求,直接调用doService()方法
6.doService()方法调用 doDispatch()方法,doDispatch()内主要分为如下几步:
1)先通过getHandler获得request中对应的请求handler
mappedHandler = getHandler(processedRequest);
2)通过获得的handler 获得对应的 HandlerAdapter
HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
3) handler 中的设置的拦截器(继承自HandlerInterceptorAdapter)在此处进行调用
if (!mappedHandler.applyPreHandle(processedRequest, response)) {
return;
}
4)执行 handler方法处理请求,并返回一个 ModelAndView 对象
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
5)对 返回的 ModelAndView对象进行处理,返回给客户端,最后调用拦截器的afterCompletion() 方法
processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);
7. 客户端收到返回的响应,将需要的部分在view层进行显示。
相关文章推荐
- SpringMVC 如何将请求找到匹配的处理方法
- SpringMVC源码剖析(二)SpringMVC是如何处理请求的
- 一个http请求过来springMVC是如何处理的?
- SpringMvc 请求处理流程(如何从tomcat到SpringMvc)
- IIS是如何处理ASP.NET请求的
- SpringMVC处理客户端请求的过程
- SpringMVC处理请求流程
- SpringMVC 处理请求的整个过程
- Servlet容器如何同时来处理多个请求
- IIS如何处理一个Asp.net请求 (How IIS Process Asp.net request)
- 【SSH网上商城项目实战24】Struts2中如何处理多个Model请求
- Ajax发送同步请求给Spring,通过controller处理完成后如何返回响应
- 从源码角度分析nodejs如何处理一个HTTP请求
- Nginx如何处理一个请求
- flask session session已过期,再发送ajax请求如何处理?
- url请求包含中文字符如何处理?
- ASP.NET MVC 中如何用自定义 Handler 来处理来自 AJAX 请求的 HttpRequestValidationException 错误
- 转 springMVC一个Controller处理所有用户请求的并发问题
- 学习ASP.NET Core, 怎能不了解请求处理管道[3]: 自定义一个服务器感受一下管道是如何监听、接收和响应请求的
- springMVC拦截器处理ajax请求及数据返回