《深入拆解Tomcat&Jetty》—— Servlet基础

我我我四月份没有写,然后五月份收获了好多个关注……(前后并没有什么因果关系)十分内疚。因为开年来入手了个好用的大纲笔记本,所以markdown没有那么迷人也是很懒了。
吴军老师说的对:大声展示你的计划,然后就会因为不想flag倒下而挣扎向前!(吴军老师并没有说过!!!

《深入拆解Tomcat&Jetty》—— Servlet基础_第1张图片 (小声嘀咕,最近很迷双黄蛋雪糕,想吃,没找到图,馋一夏)

文章目录

      • 1、Web 容器的由来
      • 2、HTTP必知必会
        • 2.1、Cookie和Session
      • 3、servlet规范和servlet容器
        • 3.1、servlet接口
        • 3.2、servlet容器
        • 3.3、扩展机制

1、Web 容器的由来

简单糊了个图,but糊完之后发现光看图好像也不是很清楚,哦耶~
一千年以前,要求很简单,只需要能浏览就可以,所以服务端只需要根据浏览器发出的请求找到对应的静态网页HTML,并传回去就可以。
后来客户孤独了,想要有来有往有交互,这就需要服务端根据交互内容做出对应的响应,要让HTTP服务器调用服务端程序。sun公司推出了Servlet技术,Servlet相当于运行在服务段得Java小程序,但是没有main方法,不能独立运行,需要部署到Servlet容器中,找个妈来管着它。Tomcat和Jetty就是Servlet容器(娃它妈)。

《深入拆解Tomcat&Jetty》—— Servlet基础_第2张图片

原文说的是:为了方便使用,所以娃它妈也具有HTTP服务器的功能。

2、HTTP必知必会

因为Tomcat和Jetty也要干以前HTTP服务器的活儿,先来搂一下一个完整的HTTP请求过程。

《深入拆解Tomcat&Jetty》—— Servlet基础_第3张图片

总结一下:

  • 处理连接请求
  • 根据协议拆包打包
  • 处理请求内容

2.1、Cookie和Session

HTTP协议是无状态的,在需要记录用户状态的场景中,以前的做法是在用户验证后,将每次请求都需要传递的登录信息保存在客户端本地,也就是Cookie。Cookie是HTTP报文的一个请求头,Web应用可以将用户的标志信息等存储在Cookie中,这样服务器每次读取Cookie就知道用户状态。
因为Cookie是明文存储,而且往往带有用户信息,所以存在很大的安全隐患。
Session转换思路,将信息存储在服务端,把用来匹配session的id交给用户。

《深入拆解Tomcat&Jetty》—— Servlet基础_第4张图片

3、servlet规范和servlet容器

前面提到的要实现动态交互就需要HTTP服务器调用后台程序来处理请求,如果在HTTP服务中处理调用哪个类的哪个方法,就会跟业务逻辑紧密耦合。
servlet容器:解决调用哪个类。用来加载和管理业务类。
servlet接口:解决调用哪个方法
servlet接口和servlet容器这一整套规范称作servlet规范。

《深入拆解Tomcat&Jetty》—— Servlet基础_第5张图片

3.1、servlet接口

public interface Servlet {
    /** servlet调用 */
    void service(ServletRequest req, ServletResponse res)throws ServletException, IOException;
    
    /** servlet配置*/
    String getServletInfo();
    ServletConfig getServletConfig();
    
    /** servlet管理 */
    void destroy();
    void init(ServletConfig config) throws ServletException;
}

3.2、servlet容器

工作流程:

《深入拆解Tomcat&Jetty》—— Servlet基础_第6张图片

我们通常是以web应用程序的方式来部署servlet的。servlet规范约定了web应用程序的目录结构

| -  MyWebApp
      | -  WEB-INF/web.xml        -- 配置文件,用来配置 Servlet 等
      | -  WEB-INF/lib/           -- 存放 Web 应用所需各种 JAR 包
      | -  WEB-INF/classes/       -- 存放你的应用类,比如 Servlet 类
      | -  META-INF/              -- 目录存放工程的一些信息

3.3、扩展机制

servlet规范提供了两种扩展机制:
Filter:干预过程。允许对请求和响应做一些统一的定制化处理。
Listener:基于状态。可以感兴趣的事件进行监听。

你可能感兴趣的:(05_极客时间阅读笔记)