SpringMVC
Tomcat
Tomcat 是基于 HTTP 协议的 Web 服务器,工作流程图 Link
Servlet
Servlet 接口定义了 Servlet 与 servlet容器 之间的契约。这个契约是:Servlet容器将Servlet类载入内存,并产生 Servlet 实例和调用它具体的方法。但是要注意的是,在一个应用程序中,每种 Servlet 类型只能有一个实例。类比 SpringMVC 中每一个 Mapping 对应一个控制层方法【不确定】
对于每一个应用程序,Servlet容器还会创建一个ServletContext对象。这个对象中封装了上下文(应用程序)的环境详情。每个应用程序只有一个ServletContext。每个Servlet对象也都有一个封装Servlet配置的ServletConfig对象。
SpringMVC
流程图
- 由
DispatcherServlet
从HandlerMappings
中匹配对应的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 是无状态的,适合在分布式系统中使用