1.Servlet简介

        Servlet是Java提供的一门动态web资源开发技术。Servlet是一个接口,需要定义其实现类,并web服务器上运行Servlet

2.Servlet的使用步骤

        三步:导坐标→实现类→配路径

(1)在pom.xml中导入Servlet依赖坐标

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>    //★
</dependency>
【注意】依赖范围<scope>需要配置成provided!原因:provided依赖范围只在编译环境和测试环境有效,运行环境无效,这样将来web项目打包成war包后里面就没有这个Servlet jar包了。而Tomcat已经自带了Servlet jar包,如果不配置provided依赖范围,打包后的war包里面的Servlet jar包会与Tomcat自带的Servlet jar包冲突。

(2)定义Servlet实现类,重写方法

(3)在实现类上面用@WebServlet注解配置Servlet的访问路径(urlPattern

        
      【tips】访问路径以“/”开头。

(4)启动Tomcat,访问该Servlet。

3.Servlet的执行流程

        Servlet实现类对象由web服务器(Tomcat)创建,Servlet中的方法由web服务器调用。
        

4.Servlet的生命周期

        生命周期:对象的生命周期是指一个对象从创建到被销毁的过程。Servlet运行在Servlet容器(即web服务器)中,其生命周期由容器来管理,分为四个阶段

(1)加载和实例化

        默认情况下,当Servlet第一次被访问时,有容器创建Servlet对象。
【tips】在使用@WebServlet配置Servlet访问路径时,还可以使用loadOnStartup属性来配置Servlet的创建时机。
@WebServlet(value = "/demo1",loadOnStartup = 1)
        ①loadOnStartup = 负整数:默认情况,表示第一次被访问时创建Servlet对象;
        ②loadOnStartup = 0 或 正整数:在服务器启动时创建Servlet对象,且数字越小优先级越高。(把创建时机提前了)

(2)初始化

        Servlet实例化后,容器将调用Servlet中的init()方法来初始化这个对象,完成一些载配置文件创建连接等初始化的工作。
【tips】init()方法只会被调用一次,因为一个Servlet对象只会被创建一次。

(3)请求处理

        每次访问Servlet,Servlet容器都会调用Servlet的service()方法对请求进行处理。

(4)服务终止

        当需要释放内存或容器关闭时,容器会调用Servlet中的destroy()方法完成资源的释放。在调用该方法后,容器会释放Servlet对象,并由Java的垃圾收集器所回收。

5.HttpServlet(★)

        HttpServlet是对HTTP协议封装的Servlet实现类。因此,在自定义Servlet实现类时不用implement Servlet了,直接extends HttpServlet并复写doGet和doPost方法即可:
        

(1)HttpServlet中为什么要根据请求方式的不同调用不同的doXXX()方法?

        因为GET/POST等不同请求方式的请求消息不一样。

(2)如何调用?

        先获取不同的请求方式,然后进行逻辑判断是哪种请求方式,再选择调用相应的doXXX()方法。

6.Servlet urlPattern的配置

(1)配置多个访问路径

        一个Servlet可以配置多个访问路径,这多个访问路径都可以访问到该Servlet。
        
【tips】@WebServlet中的urlPattrens的类型是字符串数组

(2)urlPattern的配置规则

        1)精确匹配:在@WebServlet中配置的路径和将来要访问的路径完全一样。
                
        2)目录匹配:@WebServlet使用通配符*来配置路径,访问路径*的位置可以随便写。
              
        【tips】当访问路径同时满足精确匹配和目录匹配时,优先访问精确匹配配置的Servlet。
        3)扩展名匹配:不以/开头@WebServlet使用通配符*来配置路径,访问路径*的位置可以随便写。
               
        【注意】扩展名匹配不以/开头,否则会报错:
        4)任意匹配:@WebServlet中使用"/"或"/*"来配置路径,访问路径随便写都可以访问到该Servlet。
               
        【tips】/与/*的区别:
                    ①/*的优先级高于/;
                    ②当给Servlet配置了/后,会把Tomcat中处理静态资源访问DefaultServlet覆盖掉(覆盖掉静态资源就访问不了了)。

7.使用XML配置的方式编写Servlet(旧知识)

        Servlet从3.0版本后开始支持使用注解配置,3.0以前只支持XML配置文件的方式配置。
        步骤:
(1)编写Servlet实现类;
(2)在web.xml中配置该Servlet。