一、Servlet 简介
Servlet 是 JavaEE 的规范之一,通俗的来说就是 Java 接口,将来我们可以定义 Java 类来实现这个接口,并由 Web 服务器运行 Servlet ,所以 TomCat 又被称作 Servlet 容器。
Servlet 提供了动态 Web 资源开发技术,一种可以将网页数据提交到 Java 代码,并且将 Java 程序的数据返回给网页的技术,使用 Servlet 技术实现了不同用户登录之后在页面上动态的显示不同内容等的功能。
二、生命周期
Java Servlet 的生命周期是指 Servlet 实例从创建到销毁期间所经历的一系列过程。Java Servlet 的生命周期可以分为以下三个阶段:
1、初始化阶段
初始化阶段是 Servlet 实例被创建之后立即执行的阶段,它只会执行一次。在这个阶段中,Servlet 容器会实例化 Servlet 类,并调用其 init() 方法来完成初始化工作。init()方法可以接收一个 ServletConfig 对象作为参数,用于获取 Servlet 的配置信息。
2、服务阶段
Servlet容器接收到来自客户端请求时,容器会针对该请求分别创建一个 ServletRequst 对象和 ServletResponse 对象,将它们以参数的形式传入 service() 方法内,并调用该方法对请求进行处理。在执行 service() 方法前,init() 方法必须已成功执行。
在 service() 方法中,Servlet 通过 ServletRequst 对象获取客户端的相关信息和请求信息。在请求处理完成后,通过 ServletResponse 对象将响应信息进行包装,返回给客户端。当 Servlet 容器将响应信息返回给客户端后,ServletRequst 对象与 ServletResponse 对象就会被销毁。
在 Servlet 的整个生命周期内,对于 Servlet 的每一次请求,Servlet 容器都会调用一次 service() 方法,并创建新的 ServletRequest 和 ServletResponse 对象。即 service() 方法在 Servlet 的整个生命周期中会被调用多次。
3、销毁阶段
销毁阶段是指 Servlet 容器将销毁 Servlet 实例之前所执行的一系列操作,它只会执行一次。在这个阶段中,Servlet 容器会调用 Servlet 的 destroy() 方法来释放 Servlet 占用的资源,例如关闭数据库连接、取消注册监听器等。
@WebServlet(name = "LifeServlet",urlPatterns = "/life")
public class LifeServlet extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("init 被执行了");
super.init();
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("service被执行了");
super.service(req, res);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doget被执行了");
}
@Override
public void destroy() {
System.out.println("destory被执行了");
super.destroy();
}
}
三、配置映射
Java Servlet 的配置和映射是指将 Servlet 配置信息与 Web 应用程序的 URL 映射关联起来,使得客户端能够通过 URL 访问到 Servlet。Servlet 配置包括 Servlet 名称、Servlet 类名、Servlet 参数等。在 Java Web 应用程序中,可以使用以下两种方式来配置 Servlet:
1、使用 web.xml
web.xml 是 Web 应用程序的配置文件,它位于 WEB-INF 目录下。可以通过在 web.xml 文件中来配置 Servlet。例如:将一个名为 helloServlet 的 Servlet 类映射到 URL "/hi" 上
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>net.zixue.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hi</url-pattern>
</servlet-mapping>
2、使用 注解
在servlet3.0以后,我们可以不用再web.xml里面配置servlet,只需要加上@WebServlet注解就可以修改该servlet的属性了。web.xml可以配置的servlet属性,在@WebServlet中都可以配置。
@WebServlet(name = "ServletTest1",urlPatterns = "/test1")
public class ServletTest1 extends HttpServlet {
//...
}