Servlet规范
Servlet是JavaEE规范中的一种,主要是为了扩展Java作为Web服务的功能,统一定义了对应的接口,如Servlet接口,HttpRequest接口,HttpResponse接口,Filter接口。然后由具体的服务厂商来实现这些接口如Tomcat,jetty
Servlet规范中规定了一个http请求到来的执行处理流程:对应的服务器容器会接收到对应的Http请求,然后解析该请求,创建对应的Servlet实例,调用对应init方法完成初始化,把请求相关信息封装为HttpServletRequest对象来调用Servlet的service方法处理请求,最后通过HttpServletResponse分装响应的信息交给容器,响应给客户端
Servlet核心API
ServletConfig 获取servlet初始化参数和servletContext对象
容器在初始化servlet时,为该servlet创建一个servletConfig对象,并将这个对象通过init()方法来传递并保存在此Servlet对象中。核心作用:获取初始化信息、获取ServletContext对象
ServletContext 在整个Web应用的动态资源之间共享数据
一个项目只有一个ServletContext对象,可以在多个Servlet中来获取这个对象,使用它可以给多个Servlet传递数据,该对象在Tomcat启动时创建,Tomcat关闭时才会销毁,作用在整个Wen应用的动态资源之间共享数据。
ServletRequest 封装Http请求信息,在请求时创建
HttpServletRequest接口继承ServletRequest接口,用于封装请求信息,该对象在用户请求servlet时创建并传入servlet的service()方法,在该方法中传入的servletRequest将会被强制转化为HttpServletRequest对象来进行进行HTTP请求信息的处理。核心作用:获取请求报文信息、获取网络连接信息、获取请求域属性信息
ServletResponse 封装Http响应信息,在请求时创建
HttpServletResponse继承自ServletResponse,封装了Http响应信息。客户端每个请求,服务器都会创建一个response对象,并传入给Servlet.service()。核心作用:设置响应头信息、发送状态码、设置响应正文、重定向
Tomcat结构
顶级元素:
Server:整个配置文件的根元素
Service:代表一个Engine元素以及一组与之相连的Connector元素
连接器
代表了外部客户端发送请求到特定Service的接口,同时也是外部客户端从特定Service接收响应的接口
容器
容器的作用是处理Connector接收进来的请求,并产生对应的响应,Engin,Host,Context都是容器父子关系
Engine:可以处理所有请求
Host:可以处理发向一个特定虚拟主机的所有请求
Context:可以处理一个特定Web应用的所有请求
当客户端请求发送过来后通过组建相互之间配合完成了对应的操作
Sever元素在最顶层,代表整个Tomcat容器,一个Server元素中可以有多个Service元素
Service在Connnector在Engine外面包了一层,把他们组装一起对外提供服务。一个Service可以包含多个Connector,但是只能包含一个Engine,Connector接收请求,Engine处理请求
Engine,Host和Context都是容器,且Engine包含Host,Host包含Context。每个Host组件代表Engine中的一个虚拟机。每个Context组件代表在特定Host上运行的一个Web应用
Tomcat生命周期
LifeCycle接口设计
为了统一管理Tomcat中的核心组件的生命周期,而专门设计LifeCycle接口统一管理
生命周期的方法