摘要
博主最近在复习学过的Servlet知识,发现很多都已经遗忘了,所以决定写个博客笔记来记录一下,同时也希望能够帮助阅读过的小伙伴。
博主最近在复习学过的Servlet知识,发现很多都已经遗忘了,所以决定写个博客笔记来记录一下,同时也希望能够帮助阅读过的小伙伴。
Servlet学习笔记(一)
1 Servlet概述
1.1 什么是Servlet?
Servlet是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
狭义的Servlet:指Java语音实现的一个接口;
广义的Servlet:指任何实现了这个Servlet接口的类。
一般情况理解为后者(广义)
1.2 Servlet的三种实现方式
1) 实现javax.servlet.Servlet接口(底层)
public class AServlet implements Servlet {
……
}
2) 继承import javax.servlet.GenericServlet类
public class BServlet extends GenericServlet {
……
}
3) 继承javax.servlet.http.HttpServlet类
public class CServlet extends HttpServlet {
……
}
2 Servlet接口
2.1 Servlet的生命周期概述
所谓生命周期,即出生、服务、以及死亡。
2.2 Servlet中的方法
Ø 生命周期方法
1) void init(ServletConfig)
初始化,即把Servlet装载到内存中,且只被调用一次。
2) void service(ServletRequest,ServletResponse)
每次处理请求时都会被调用。
3) void destroy()
临死之前被调用一次(该方法不是销毁Servlet,而是在Servlet被销毁前的最后操作,可以理解为临死前的最后一句话)
Ø 其余方法
4) getServletConfig()
获取Servlet配置信息。
5) getServletInfo()(基本上不使用)
返回值String类型,返回Servlet的信息。
2.3 深入理解Servlet生命周期
1) Servlet的出生
服务器在Servlet第一次被访问时创建Servlet,或者是在服务器启动时创建(需要在web.xml中配置,默认情况下Servlet是在第一次被访问时由服务器创建的)
一个Servlet类型,服务器只创建一个实例对象,比如首次访问http://localhost:8080/myweb/MyServlet时,服务器通过web.xml配置“/MyServlet”找到绑定的Servlet名称,然后服务器会查看这个类型的Servlet是否已经创建过,如果没有那么服务器会通过反射来创建该实例,否则直接使用创建过的实例。
在Servlet被创建后,服务器会马上调用Servlet的void init(ServletConfig)方法。请记住, Servlet出生后马上就会调用init()方法,而且一个Servlet的一生。这个方法只会被调用一次。这好比小孩子出生后马上就要去剪脐带一样,而且剪脐带一生只有一次。(我们可以把一些对Servlet的初始化工作放到init方法中!)
2) Servlet服务
当服务器每次接收到请求时,都会去调用Servlet的service()方法来处理请求。服务器接收到一次请求,就会调用service() 方法一次,所以service()方法是会被调用多次的。正因为如此,所以我们才需要把处理请求的代码写到service()方法中!
3) Servlet的死亡
Servlet是不会轻易离去的,通常都是在服务器关闭时Servlet才会离去!在服务器被关闭时,服务器会去销毁Servlet,在销毁Servlet之前服务器会先去调用Servlet的destroy()方法,我们可以把Servlet的临终遗言放到destroy()方法中,例如对某些资源的释放等代码放到destroy()方法中。
2.4 Servlet执行流程图