Servlet概述

Java Servlet API 是Servlet容器(如tomcat)和Servlet之间的一系列接口,它们定义了容器与Servlet交互的的各种方法。

Servlet工作流程

Servlet概述_第1张图片
image.png

Servlet核心类

UML

Servlet概述_第2张图片
Servlet UML.png

ServletConfig

ServletConfig包含了Servlet的配置参数,由容器在Servlet初始化的时候传递给Servlet。


Servlet概述_第3张图片
ServletConfig.png

ServletContext

ServletContext可以看作是Servlet容器的抽象,提供了操作容器的方法。
容器为每个web项目都创建一个ServletContext实例,在启动时创建,服务器关闭时销毁,在一个web项目中共享数据,管理web项目资源,为整个web配置公共信息等,通俗点讲,就是一个web项目,就存在一个ServletContext实例,每个Servlet读可以访问到它。

Servlet概述_第4张图片
ServletContext.png

Servlet接口

定义了一些由容器调用的方法,完成Servlet的配置,初始化以及执行具体逻辑。

Servlet概述_第5张图片
Servlet.png

GenericServlet

GenericServlet实现了Servlet接口以及ServletConfig接口,初步实现配置,日志,初始化相关方法。

Servlet概述_第6张图片
GenericServlet.png

HttpServlet

继承GenericServlet,将处理请求的核心方法service根据Http Method分成对应的方法再处理。

Servlet概述_第7张图片
HttpServlet.png

ServletRequest

Servlet容器将接受到的请求的内容封装成ServletRequest对象,传递给Servlet的service方法执行逻辑。ServletRequest中定义了获取请求内容的一系列方法。

Servlet概述_第8张图片
ServletRequest.png

HttpServletRequest

继承ServletRequest,定义了HTTP协议相关内容参数获取的方法。

Servlet概述_第9张图片
HttpServletRequest.png

ServletResponse

请求出参的封装对象,由Servlet容器在Servlet的service方法中传入,根据业务逻辑填充,再由Servlet容器转成对应的Response。

Servlet概述_第10张图片
ServletResponse.png

HttpServletResponse

继承ServletResponse,根据HTTP协议定义相关方法。

Servlet概述_第11张图片
HttpServletResponse.png

ServletRequest和ServletResponse都是接口,具体的对象由Servlet容器提供,我们无需关心具体的实例对象,只需要操作接口的方法。

ServletResponseWrapper,ServletRequestWrapper

ServletResponseWrapper和ServletRequestWrapper是ServletResponse和ServletRequest的包装类,允许我们重写包装类,在执行真实实例对象的前后做一些其他操作。

Filter

Servlet容器会在Servlet的service外层包裹一系列Filter组成的FilterChain,当请求进入Servlet容器时,实现在Servlet的service执行前后做一些其他处理。

Servlet概述_第12张图片
Filter.png

在Filter的doFilter方法中调用FilterChain的DoFilter方法完成调用传递。

FilterChain.png

Filter初始化方法中传入FilterConfig,通过该类可以获取web.xml中定义的参数,以及ServletContext。

Servlet概述_第13张图片
FilterConfig.png

Listener

Servlet API 提供了一些Listener允许我们监听特定的事件。

ServletContextListener

接收关于ServletContext生命周期更改的通知事件的接口。

Servlet概述_第14张图片
ServletContextListener.png

ServletContextAttributeListener

接收web应用程序servlet上下文中属性列表更改的通知。

Servlet概述_第15张图片
ServletContextAttributeListener.png

ServletRequestListener

用于接收关于进入和超出Web应用程序范围的请求的通知事件的接口。

Servlet概述_第16张图片
ServletRequestListener.png

ServletRequestAttributeListener

接收关于ServletRequest属性更改的通知事件的接口。

Servlet概述_第17张图片
ServletRequestAttributeListener.png

HttpSessionListener

接收关于HttpSession生命周期更改的通知事件的接口。

Servlet概述_第18张图片
HttpSessionListener.png

HttpSessionBindingListener

使对象从会话绑定到绑定或从其绑定时被通知。

Servlet概述_第19张图片
HttpSessionBindingListener.png

HttpSessionAttributeListener

用于接收关于HttpSession属性更改的通知事件的接口。

Servlet概述_第20张图片
HttpSessionAttributeListener.png

HttpSessionActivationListener

用于接收session活跃与钝化之间变化事件的接口。

Servlet概述_第21张图片
HttpSessionActivationListener.png

AsyncListener

如果在添加了侦听器的ServletRequest上启动的异步操作已完成,超时或导致错误,将会通知侦听器。

Servlet概述_第22张图片
AsyncListener.png

你可能感兴趣的:(Servlet概述)