美文网首页
Spring注解之八MVC

Spring注解之八MVC

作者: Java及SpringBoot | 来源:发表于2019-11-27 11:06 被阅读0次

    个人专题目录


    3. web

    • 执行流程
      • 用户发送请求至前端控制器DispatcherServlet
      • DispatcherServlet收到请求调用HandlerMapping处理器映射器。
      • 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
      • DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
      • 执行处理器(Controller,也叫后端控制器)。
      • Controller执行完成返回ModelAndView
      • HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
      • DispatcherServlet将ModelAndView传给ViewReslover视图解析器
      • ViewReslover解析后返回具体View
      • DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
      • DispatcherServlet响应用户

    3.1. servlet3.0

    servlet3.0-ServletContainerInitializer

    Shared libraries(共享库) / runtimes pluggability(运行时插件能力)
    
    1、Servlet容器启动会扫描,当前应用里面每一个jar包的
        ServletContainerInitializer的实现
    2、提供ServletContainerInitializer的实现类;
        必须绑定在,META-INF/services/javax.servlet.ServletContainerInitializer
        文件的内容就是ServletContainerInitializer实现类的全类名;
    
    总结:容器在启动应用的时候,会扫描当前应用每一个jar包里面
    META-INF/services/javax.servlet.ServletContainerInitializer
    指定的实现类,启动并运行这个实现类的方法;传入感兴趣的类型;
    
    
    ServletContainerInitializer;
    @HandlesTypes;
    

    servlet3.0-ServletContext注册三大组件

    ServletRegistration
    FilterRegistration
    Listener
    

    servlet3.0-与SpringMVC整合分析

    springmvc-定制与接管SpringMVC

    ServletContext

    3.2. 异步请求

    servlet3.0异步处理

    在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求。
    即每一次Http请求都由某一个线程从头到尾负责处理。
    
    如果一个请求需要进行IO操作,比如访问数据库、调用第三方服务接口等,那么其所对应的线程将同步地等待IO操作完成, 而IO操作是非常慢的,所以此时的线程并不能及时地释放回线程池以供后续使用,在并发量越来越大的情况下,这将带来严重的性能问题。即便是像Spring、Struts这样的高层框架也脱离不了这样的桎梏,因为他们都是建立在Servlet之上的。为了解决这样的问题,Servlet 3.0引入了异步处理,然后在Servlet 3.1中又引入了非阻塞IO来进一步增强异步处理的性能。
    

    返回Callable

    返回DeferredResult

    相关文章

      网友评论

          本文标题:Spring注解之八MVC

          本文链接:https://www.haomeiwen.com/subject/jnpywctx.html