1. Tomcat 服务器

  • 服务器的本质作用
    • 将资源对外暴露;
    • 配合各种传输协议进行响应输出;
    • 传统 Java 开发的 Web 应用只是一个半成品,类似于一个插件,而服务器则像一个收发器;
  • Tomcat 的本质:轻量级的服务器;

  • Tomcat 组成:web 服务器+ Servlet/JSP容器(Web容器);

Tomcat 、Servlet 与 Jsp - 图1
Tomcat 、Servlet 与 Jsp - 图2

  • 功能:监听端口,接收请求后,根据 url 等信息,确定将请求交给哪个 servlet 去处理,再调用对应 servlet 的 service 方法,service 方法返回一个 response 对象,tomcat 再把这个 response 返回给客户端;

Tomcat 、Servlet 与 Jsp - 图3

  • JSP/Servlet 容器的基本功能是把动态资源转换成静态资源;
  • Server.xml
    • connector 负责接收请求消息,传送响应消息;
    • Engine 实现业务逻辑,调用 service;

Tomcat 、Servlet 与 Jsp - 图4
Tomcat 、Servlet 与 Jsp - 图5

  • Tomcat 处理请求的三种方式
    • DefaultServlet:最低级匹配,当没有对应的 Servlet 处理当前请求时,才轮到它处理,正常情况下返回响应请求的资源,否则显示 404 页面;
    • JspServlet:将 .jsp 解析成 Jspservlet 进行运行;

Tomcat 、Servlet 与 Jsp - 图6

  • 完整的 web 访问过程

Tomcat 、Servlet 与 Jsp - 图7
Tomcat 、Servlet 与 Jsp - 图8**

2. Servlet

Tomcat 、Servlet 与 Jsp - 图9

  • servlet 并不会直接与客户端进行交互;
  • servlet是一个Java接口,定义的是一套处理网络请求的规范

Tomcat 、Servlet 与 Jsp - 图10

  • 如何实现 servlet
    • 不用实现 javax.servlet 接口;
    • 不用继承 GenericSevlet 抽象类;
    • 只需继承 HttpServlet 并重写 doGet() /doPost();
    • 父类把能写的逻辑都写完,把不确定的业务代码抽成一个方法,调用它,当子类重写该方法,整个业务代码就活了,这就是模板方法模式;

      3. Jsp

      jsp 的本质是 servlet,运行在 Tomcat 服务器中,自动将原先写在 JSP 里的 HTML 代码放在 out.println() 里;
      Tomcat 、Servlet 与 Jsp - 图11

      参考

      Tomcat 外传
      浅谈 JSP