Servlet 简介和快速入门

mac2025-11-12  7

Servlet 基本介绍

文章目录

Servlet 基本介绍1. 基本概念2. 快速入门3. Servlet 执行原理4. Servlet 中的方法5. Servlet 的生命周期6. Servlet 的注解配置7. IDEA 与 Tomcat 的相关细节8. Servlet 的体系结构



1. 基本概念

  Servlet 是由 server applet 两个单词拼接而成,指的是运行在服务器端的小程序,它本质上是一个接口,它定义了 Java 类被浏览器访问到(被tomcat识别到)的规则。使用时需要我们自定义一个类来实现 Servlet 接口,并复写其中的方法。

这里提供几个关于 Servlet 的学习资料或平台:

J2EE API 在线文档菜鸟教程HOW2J

2. 快速入门

  我这里演示的开发环境是 IDEA_2019.2.3 和 Tomcat_9.0.26,关于 IDEA 配置 Tomcat 的方法,推荐一篇博文 IDEA 配置 Tomcat ,讲的相对详细。

创建 JavaWeb 项目(Web Application)。

定义一个类,实现 Servlet 接口,复写其中方法。

package servlet.demo1; import javax.servlet.*; import java.io.IOException; public class ServletDemo implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("项目启动了!"); } @Override public ServletConfig getServletConfig() { return null; } @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() { System.out.println("项目关闭了!"); } } 在 web.xml 中配置 Servlet 的资源路径,后面会介绍注解配置,这里作为了解。 <!-- 在web.xml中配置 --> <!-- 配置servlet--> <servlet> <!-- 这里给模块命名,与后面的mapping相对应 --> <servlet-name>demo1</servlet-name> <!-- 这里写全类名 --> <servlet-class>com.base.servlet.ServletDemo1</servlet-class> </servlet> <!--配置路径--> <servlet-mapping> <!-- 这里的 name 属性与上面对应 --> <servlet-name>demo1</servlet-name> <!-- 这里是浏览器访问资源的 资源路径 --> <url-pattern>/demo1</url-pattern> </servlet-mapping> 配置 Tomcat 的虚拟路径

启动Tomcat,到浏览器访问链接:http://localhost:8080/Serv/demo1

查看看控制台输出



3. Servlet 执行原理

当服务器接收到客户端浏览器的请求后,会解析请求URL路径,获取访问 Servlet 的 资源路径。服务器根据获取到的 资源路径 去查找 web.xml 文件中的 <url-pattern> 标签是否有对应的 资源路径。如果有,则找到对应的 <servlet-class> 全类名。Tomcat 将对应类的字节码文件加载进内存,创建其对象,并调用 service() 方法。

4. Servlet 中的方法

方法名描述init()初始化方法,在 Servlet 对象被创建时被调用,并且只会调用一次。getServletConfig()获取 ServletConfig 对象,这是 Servlet 的配置对象。service()提供服务方法,每次 Servlet 被访问时,都会被调用。getServletInfo()获取 Servlet 的一些信息,如:版本、作者等信息。destroy()销毁方法,在服务器正常关闭时被调用,并且只会执行一次。

关于init()方法:

默认情况下,Servlet 第一次被访问时才会去创建对象。通过配置可以改变 Servlet 对象的创建时机。具体操作如下: <!-- 在<servlet>标签下配置 --> <!-- 第一次被访问时创建对象,则设置值为任意的 负数 即可。 --> <load-on-startup>-5</load-on-startup> <!-- 在服务器启动时创建对象,则设置值为任意 正数 或 0 即可。--> <load-on-startup>5</load-on-startup> -->

5. Servlet 的生命周期

Servlet 中的 init()、service()、destroy() 三个方法可以代表 Servlet 的生命周期。

被创建:调用 init() 方法,对象被创建后会调用一次。提供服务:执行service()方法,对象每次被访问都会执行。被销毁:执行destroy()方法,服务器正常关闭前会被调用一次。

注意:

  Servlet是单例的,多个用户同时访问时,可能存在安全问题,所以尽量不在 Servlet 中定义成员变量,可以定义常量用 final 修饰。



6. Servlet 的注解配置

  Servlet3.0 后的新特性,可以通过注解的方式配置 Servlet ,不用在 web.xml 中配置。

  配置方法:在类上使用@WebServlet("/资源路径")注解,如下所示:

//@WebServlet(urlPatterns = "/demo2") //value属性可以省略属性名 @WebServlet("/demo2") public class ServletDemo implements Servlet { //类方法...... }

注意:

urlPatterns 是 Servlet 的资源访问路径。一个 Servlet 可以有多个资源访问路径:@WebServlet({"/demo1","/demo2","/demo3"})。路径定义规则 /XXX —— 一层路径/XXX/XXX —— 多层路径*.后缀名 —— *代表任意字符,只要访问资源路径的后缀名是提前设定的字符,就可以访问成功。

7. IDEA 与 Tomcat 的相关细节

IDEA 会为每一个Tomcat 部署的项目单独创建一份配置文件,存储路径会在启动或关闭项目时输出到控制台上,如下图所示。

工作空间项目 和 Tomcat部署的 web项目 工作空间:项目文件夹Tomcat部署的web项目:项目文件夹\out\artifacts\项目名\Tomcat真正访问的是“Tomcat部署的web项目”“Tomcat部署的web项目”对应着“工作空间项目”的web目录下的所有资源。WEB-INFO目录下的资源不能被浏览器直接访问。

8. Servlet 的体系结构

名称类型描述Servlet接口上面已经介绍过了。GenericServlet抽象类继承Servlet,将Servlet接口中其他的方法做了默认空实现,只将Service做抽象。HttpServlet抽象类继承GenericServlet,是对http协议的一种封装,简化操作。

注意:

用的较多的是 HttpServlet 接口。其中具体的方法,这里不做介绍了,具体查看文章开头提供的 API 文档。实现 HTTPServlet 的类需要重写 doGet() 和 doPost() 方法。

2019年11月1日19:43:11


最新回复(0)