tomcat9入门(一)目录结构,体系结构,servlet

Apache Tomcat

开源的服务端http/https请求解析和分发的服务软件

目录结构 Directory Layout

  • bin/:可执行文件
  • conf/:tomcat全局配置文件
    • server.xml:核心配置文件,通过添加context标签来告诉tomcat你有哪些web应用以及他们在哪,也可以在
  • lib/:全局依赖的jar包
  • log/:日志目录
  • temps/:临时文件
  • webapp/:web应用发布目录,其中一个文件夹就是一个应用
    • WEB-INF/:应用信息,无法从tomcat外部访问
      • classes/:Java源代码的字节码.class
      • lib/:classes中依赖的jar包
      • web.xml:当前应用的配置文件
  • work/:jsp解析内容

体系结构

server.xml描述了体系结构

  • 最顶层是tomcat服务器,名为server
  • server下有一个service标签作用为...
  • service下有多个connector,用于监听和接收不同端口的协议
  • service下有一个engine,处理所有connector接收的数据
  • engine下有多个host,engine根据请求中的主机地址将数据分发给对应tomcat的虚拟主机host
  • host下有多个context,一个context对应一个web应用,web应用中又可以有多个servlet对象

在一个请求发到目标主机的tomcat服务器后,connector监听到这个请求,并将请求转交给engine,engine根据请求中的host部分转交给对应的host,host根据context再将剩余部分转交给web应用,web应用如果发现url匹配某servlet则调用该servlet并将请求对象传给servlet,servlet对象根据重写方法构造响应,传回引擎engine,engine加上默认信息后,返回给请求主机

servlet

servlet是sun公司定义的接口,用于获得请求信息和构造回复内容实现动态网页/数据,实现类通过反射被调用,实现类的.class文件被放在classes文件夹中

一个web应用(对应context)可以包含多个servlet,web应用根据请求中的servlet名称来查找servlet,故在web应用中的web.xml中需要配置servlet的名称、目录和对应的.class文件位置。servlet3.0后,可以使用注解来自动完成上面配置的固定步骤

servlet接口常用方法:

  1. init:servlet对象创建时自动调用,创建servlet对象的时间可以是第一次访问到或者服务器启动时,一旦创建,就不会再调用此方法
    • 可以在web.xml中指定创建servlet对象的时间,和多个servlet创建的优先级/顺序
    • init的参数ServletConfig可以告知servlet当前的配置信息,比如该servlet在web.xml中的名字等
  2. service:每得到一次请求,如果此方法被重写,则只调用此方法
  3. doPost:每得到一次请求,如果service未被重写,在请求类型是Post时调用此方法,(仍然先调用了service)
  4. doGet:每得到一次请求,如果service未被重写,在请求类型时Get时调用此方法,(仍然先调用了service)
  5. destory:servlet对象销毁时调用,servlet对象在tomcat服务器关闭时销毁

ServletContext

ServletContext是一个web应用context中的全局对象,包含当前web应用中的信息,在tomcat服务器启动时创建,关闭时销毁。包含的信息比如当前web应用的url。

ServletContext对象是域对象,即可以通过键值对存储整个web应用的共享数据(setAttribute/getAttribute/removeAttribute)。使用场景比如一个web应用的所有servlet可以共享一个连接池对象

其他注意事项

编写web应用时,idea和eclipse的项目下都会有src的文件夹,这个文件夹下的所有内容将会放入该web应用根目录的classes文件夹下

你可能感兴趣的:(服务端)