Servlet
Servlet是用Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据,生成动态Web内容。
Servlet接口
Servlet接口是所有Servlet类必须间接或者直接实现的一个接口,它定义了Servlet和Servlet容器之间的约定,这个约定是:Servlet容器将Servlet类加载到内存中并生成它的实例和调用该实例的具体方法,在一个应用程序中,一个Servlet类只能有一个实例( 那么如何同时处理多个请求?)。
Servlet 接口中定义的方法以及Servlet的生命周期
public interface Servlet {
void init(ServletConfig var1) throws ServletException;
ServletConfig getServletConfig();
void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
String getServletInfo();
void destroy();
接口中包括三个方法 init(), service(), destroy()
,代表了Servlet从创建到工作最后被销毁的过程,Servlet容器会根据下列规则来调用这三个方法。
init()
: 当Servlet第一次被请求,Servlet就会调用这个方法来初始化一个Servlet对象,但是这个方法在后续的请求中不会被Servlet容器调用,就像人只能出生一次,在调用这个方法时,Servlet容器会传入一个ServletConfig对象从而对Servlet对象进行初始化。
service()
: 每当客户端请求Servlet时,Servlet容器就会调用这个方法,在第一次请求中,Servlet容器会调用init()
方法初始化一个Servlet对象,然后调用service方法。在之后的请求中,Servlet容器直接调用service方法。 这个方法具有两个参数ServletRequest
对象和ServletResponse
对象,这两个对象都是由Servlet容器封装好的不需要我们实现,可以直接使用。
ServletRequest
:封装了当前的Http请求,因此开发人员无需解析和操作原始的Http数据。
ServletResponse
: 表示当前用户的Http响应,程序员只需要直接操作ServletResponse
对象就能把响应发回给用户。
destory()
: 当需要销毁Servlet时,Servlet容器就会调用这个方法,这个方法会在所有的线程执行完或者超时后执行,在执行完后Servlet容器不会再把请求发送给这个Servlet,这个方法可以用来释放Servlet占用的资源和执行一些清理工作。
Servlet容器
Web服务器
web服务器是通过Http协议来传输信息的一种程序,用户在浏览器输入一个url,服务器通过http协议发送网页信息到客户端,然后用户获取网页进行浏览。Http协议指明了请求(Request)消息和响应(Response)消息的格式。
Servlet容器
我们发现,通过客户端和web服务器只能实现静态网页的请求,如果用户要根据自己的需求来读取不同的动态网页,这种方式无法满足。Servlet容器的作用就是充当web服务器和Servlet之间的桥梁,web服务器通过Servlet容器来操作Servlet动态的生成网页,Servlet容器就是来装载Servlet的。