Spring mvc 启动 和 请求分发
2017-06-06 15:21
134 查看
Spring mvc 启动 和 请求分发 启动加载: abstract class HttpServletBean extends HttpServlet void init() initServletBean(); abstract class FrameworkServlet extends HttpServletBean void initServletBean() WebApplicationContext initWebApplicationContext() onRefresh(wac); class DispatcherServlet extends FrameworkServlet void onRefresh(ApplicationContext context) void initStrategies(ApplicationContext context) initMultipartResolver(context); initLocaleResolver(context); initThemeResolver(context); initHandlerMappings(context); initHandlerAdapters(context); initHandlerExceptionResolvers(context); initRequestToViewNameTranslator(context); initViewResolvers(context); initFlashMapManager(context); 请求分发: HTTP request-->httpServlet --->class FrameworkServlet ---->doPost() or doGet() processRequest(HttpServletRequest request, HttpServletResponse response) doService(request, response); class DispatcherServlet extends FrameworkServlet void doService(HttpServletRequest request, HttpServletResponse response) doDispatch(request, response); // Actually invoke the handler. mv = ha.handle(processedRequest, response, mappedHandler.getHandler()); SimpleControllerHandlerAdapter implements HandlerAdapter ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) ((Controller) handler).handleRequest(request, response); 用户在使用时,实现了 AbstractController.handleRequestInternal() 或者 重写 Controller handleRequest() ha 使用哪个Adapter ? 一般需要在配置文件中写明 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> 下面这个文件中会自动加载 /org/springframework/web/servlet/DispatcherServlet.properties org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\ org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\ org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\ org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
相关文章推荐
- Spring MVC的handlermapping之请求分发如何找到正确的Handler(BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping)
- Spring MVC的handlermapping之请求分发如何找到正确的Handler(RequestMappingHandlerMapping)
- 前端控制器是整个MVC框架中最为核心的一块,它主要用来拦截符合要求的外部请求,并把请求分发到不同的控制器去处理,根据控制器处理后的结果,生成相应的响应发送到客户端。前端控制器既可以使用Filter实现(Struts2采用这种方式),也可以使用Servlet来实现(spring MVC框架)。
- Spring MVC学习---JSON转换功能(启动Spring MVC的注解功能,完成请求和注解POJO的映射)
- spring mvc 访问不同的目录下的jsp视图及处理POST请求参数中文乱码问题
- 教你写Android网络框架之Http请求的分发与执行
- Spring MVC 的请求追踪及原理推导
- spring mvc 响应处理post请求和get请求 测试
- Spring MVC 根应用上下文在Web容器中的启动及其销毁
- spring mvc 请求转发和重定向(转)
- 无法在web服务器上启动调试.服务器因语法无效而未能处理调试请求.有关更多信息,请单击"帮助"
- 使用ProceedingJoinPoint获取当前请求的方法等参数——spring mvc拦截器
- android笔记--处理started service的多次启动请求
- 解决“服务没有及时响应启动或控制请求”
- xml post 请求到另外一个spring mvc 中,xml内容被转义了
- spring mvc获取请求的参数的几种方式
- Spring MVC 请求响应流程
- Spring MVC 源码解析: HTTP 请求与响应过程
- SpringMVC请求分发的简单实现
- SpringMVC请求分发的简单实现