Java Web开发的核心技术——Servlet是如何工作的?

2026-06-10 18:13:18 773阅读 0评论 SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1096个文字,预计阅读时间需要5分钟。

文章目录:

1.Servlet的概念

Java Web开发的核心技术——Servlet是如何工作的?

2.Servlet的快速入门

3.Servlet的执行原理

Java Web开发的核心技术——Servlet是如何工作的?

4.Servlet的生命周期

4.1 指示Servlet的创建时机 4.2 Destroy方法

5.总结


文章目录

  • ​​1、Servlet的概念​​
  • ​​2、Servlet的快速入门​​
  • ​​3、Servlet的执行原理​​
  • ​​4、Servlet的生命周期​​
  • ​​4.1 指定Servlet的创建时机​​
  • ​​4.2 Destroy方法​​

1、Servlet的概念

  • Servlet是Server和Applet的这两个单词的组合,即运行在服务器上的小程序。
  • Servlet就是一个接口,定义了Java类被浏览器访问到的规则。
  • Java程序员自定义一个类,实现Servlet接口并重写接口中的方法,Web服务器(如Tomcat等)就可以识别并执行这个程序。

2、Servlet的快速入门

  • 创建JavaEE项目

  • 定义一个类,实现Servlet接口,实现接口中的方法
/**
* 定义一个实现Servlet接口的类
*
* @author zhuhuix
* @date 2020-08-23
*/
public class ServletDemo implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {

}

@Override
public ServletConfig getServletConfig() {
return null;
}

// Demo服务
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Hello Servlet!!!");
}

@Override
public String getServletInfo() {
return null;
}

@Override
public void destroy() {

}
}
  • 在web.xml配置Servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">

<!-- 配置Servlet -->
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>demo.servlet.ServletDemo</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
</web-app>
  • 运行
  • 访问localhost:8080/servlet_war_exploded/demo路径

3、Servlet的执行原理

  • 当服务器接受到客户端浏览器的请求后,会解析请求的URL路径,获取访问的Servlet的资源路径
  • 查找web.xml,是否有对应的url-pattern标签体内容
  • 如果存在以上标签体内容,则找到其对应的servlet-class标签体中标注的类名
  • 接着由web服务器根据全类名对应的的字节码文件加载进内存,并且创建对应的对象
  • 最后调用该对象的相应方法
  • 4、Servlet的生命周期

    • 例子
    // 初始化方法
    // 在Servlet被创建时执行,只会执行一次
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    System.out.println("init...");
    }

    // 获取Servlet配置
    @Override
    public ServletConfig getServletConfig() {
    return null;
    }

    // 提供服务的方法
    // 每一次Servlet被访问时执行,执行多次
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    System.out.println("service...");
    }

    // 获取Servlet的一些信息
    @Override
    public String getServletInfo() {
    return null;
    }

    // 销毁方法
    // 在web服务器正常关闭时执行,只执行一次
    @Override
    public void destroy() {
    System.out.println("destroy...");
    }

    • 生命周期图

    4.1 指定Servlet的创建时机

    • 在服务器启动时就创建
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">

    <!-- 配置Servlet -->
    <servlet>
    <servlet-name>demo</servlet-name>
    <servlet-class>demo.servlet.ServletDemo</servlet-class>

    <!-- 指定Servlet的创建时机
    1.在服务器启动时就创建,load-on-startup配置为0或正值
    -->
    <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
    <servlet-name>demo</servlet-name>
    <url-pattern>/demo</url-pattern>
    </servlet-mapping>
    </web-app>
    • 第一次被访问时才创建
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">

    <!-- 配置Servlet -->
    <servlet>
    <servlet-name>demo</servlet-name>
    <servlet-class>demo.servlet.ServletDemo</servlet-class>

    <!-- 指定Servlet的创建时机
    2.第一次被访问时创建,load-on-startup配置为负值
    -->
    <load-on-startup>-1</load-on-startup>

    </servlet>

    <servlet-mapping>
    <servlet-name>demo</servlet-name>
    <url-pattern>/demo</url-pattern>
    </servlet-mapping>
    </web-app>
    • 注意点: Servlet的init方法中尽量不要定义成员变量。

    4.2 Destroy方法

    • 只有服务器正常关闭时,才会执行Destroy方法
    • Destroy方法在Servlet销毁之前执行,一般用于释放资源。


    本文共计1096个文字,预计阅读时间需要5分钟。

    文章目录:

    1.Servlet的概念

    Java Web开发的核心技术——Servlet是如何工作的?

    2.Servlet的快速入门

    3.Servlet的执行原理

    Java Web开发的核心技术——Servlet是如何工作的?

    4.Servlet的生命周期

    4.1 指示Servlet的创建时机 4.2 Destroy方法

    5.总结


    文章目录

    • ​​1、Servlet的概念​​
    • ​​2、Servlet的快速入门​​
    • ​​3、Servlet的执行原理​​
    • ​​4、Servlet的生命周期​​
    • ​​4.1 指定Servlet的创建时机​​
    • ​​4.2 Destroy方法​​

    1、Servlet的概念

    • Servlet是Server和Applet的这两个单词的组合,即运行在服务器上的小程序。
    • Servlet就是一个接口,定义了Java类被浏览器访问到的规则。
    • Java程序员自定义一个类,实现Servlet接口并重写接口中的方法,Web服务器(如Tomcat等)就可以识别并执行这个程序。

    2、Servlet的快速入门

    • 创建JavaEE项目

    • 定义一个类,实现Servlet接口,实现接口中的方法
    /**
    * 定义一个实现Servlet接口的类
    *
    * @author zhuhuix
    * @date 2020-08-23
    */
    public class ServletDemo implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
    return null;
    }

    // Demo服务
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    System.out.println("Hello Servlet!!!");
    }

    @Override
    public String getServletInfo() {
    return null;
    }

    @Override
    public void destroy() {

    }
    }
    • 在web.xml配置Servlet
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">

    <!-- 配置Servlet -->
    <servlet>
    <servlet-name>demo</servlet-name>
    <servlet-class>demo.servlet.ServletDemo</servlet-class>
    </servlet>

    <servlet-mapping>
    <servlet-name>demo</servlet-name>
    <url-pattern>/demo</url-pattern>
    </servlet-mapping>
    </web-app>
    • 运行
    • 访问localhost:8080/servlet_war_exploded/demo路径

    3、Servlet的执行原理

  • 当服务器接受到客户端浏览器的请求后,会解析请求的URL路径,获取访问的Servlet的资源路径
  • 查找web.xml,是否有对应的url-pattern标签体内容
  • 如果存在以上标签体内容,则找到其对应的servlet-class标签体中标注的类名
  • 接着由web服务器根据全类名对应的的字节码文件加载进内存,并且创建对应的对象
  • 最后调用该对象的相应方法
  • 4、Servlet的生命周期

    • 例子
    // 初始化方法
    // 在Servlet被创建时执行,只会执行一次
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    System.out.println("init...");
    }

    // 获取Servlet配置
    @Override
    public ServletConfig getServletConfig() {
    return null;
    }

    // 提供服务的方法
    // 每一次Servlet被访问时执行,执行多次
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    System.out.println("service...");
    }

    // 获取Servlet的一些信息
    @Override
    public String getServletInfo() {
    return null;
    }

    // 销毁方法
    // 在web服务器正常关闭时执行,只执行一次
    @Override
    public void destroy() {
    System.out.println("destroy...");
    }

    • 生命周期图

    4.1 指定Servlet的创建时机

    • 在服务器启动时就创建
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">

    <!-- 配置Servlet -->
    <servlet>
    <servlet-name>demo</servlet-name>
    <servlet-class>demo.servlet.ServletDemo</servlet-class>

    <!-- 指定Servlet的创建时机
    1.在服务器启动时就创建,load-on-startup配置为0或正值
    -->
    <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
    <servlet-name>demo</servlet-name>
    <url-pattern>/demo</url-pattern>
    </servlet-mapping>
    </web-app>
    • 第一次被访问时才创建
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">

    <!-- 配置Servlet -->
    <servlet>
    <servlet-name>demo</servlet-name>
    <servlet-class>demo.servlet.ServletDemo</servlet-class>

    <!-- 指定Servlet的创建时机
    2.第一次被访问时创建,load-on-startup配置为负值
    -->
    <load-on-startup>-1</load-on-startup>

    </servlet>

    <servlet-mapping>
    <servlet-name>demo</servlet-name>
    <url-pattern>/demo</url-pattern>
    </servlet-mapping>
    </web-app>
    • 注意点: Servlet的init方法中尽量不要定义成员变量。

    4.2 Destroy方法

    • 只有服务器正常关闭时,才会执行Destroy方法
    • Destroy方法在Servlet销毁之前执行,一般用于释放资源。