SpringMVC

Tomcat

Tomcat 是基于 HTTP 协议的 Web 服务器,工作流程图 Link

Servlet

Servlet 接口定义了 Servlet 与 servlet容器 之间的契约。这个契约是:Servlet容器将Servlet类载入内存,并产生 Servlet 实例和调用它具体的方法。但是要注意的是,在一个应用程序中,每种 Servlet 类型只能有一个实例。类比 SpringMVC 中每一个 Mapping 对应一个控制层方法【不确定】

对于每一个应用程序,Servlet容器还会创建一个ServletContext对象。这个对象中封装了上下文(应用程序)的环境详情。每个应用程序只有一个ServletContext。每个Servlet对象也都有一个封装Servlet配置的ServletConfig对象。

SpringMVC

流程图

  • DispatcherServletHandlerMappings中匹配对应的Handler。此时只是获取到了对应的Handler,然后拿着这个Handler去寻找对应的适配器,即:HandlerAdapter:让固定参数的 Servlet 处理方法调用灵活的 Handler 来处理;
  • 执行 Controller 处理业务逻辑, 执行完成之后返回一个 ModeAndView 或 Json 格式数据;

HandlerMapping/HandlerAdapter 的适配器模式

SpringMVC 的 Handler 有多种实现方式(如继承 Controller 接口、继承 HttpRequestHandler 接口、基于注解 @Controller 的控制器)。由于实现方式不一样,调用方式就不确定,就需要适配器模式将所有实现方式都统一成同一个接口。把任何一个 Handler 都适配成一个HandlerAdapter,从而可以做统一的流程处理,不用耦合具体的处理器,模糊掉具体的实现。

Spring MVC会为每一个标记了 @Controller 的类创建一个控制器实例(bean),并且根据这些类中的 @RequestMapping 注解来配置 URL 到方法的映射。这些映射信息通常会被存储在一个叫做 HandlerMapping 的组件中

系统权限

JWT 是无状态的,适合在分布式系统中使用