Servlet

1. 概述

Servlet是Java提供的一门动态web资源开发技术。

Servlet 是JavaEE 规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet。

2. 快速入门

1.创建web项目,导入Servlet依赖坐标。

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
</dependency>

2.创建:定义一个类,实现Servlet接口,重写接口中的所有方法,并在service方法中输入一句话。

3.配置:在类上使用@WebServlet注解,配置该Servlet的访问路径。

@WebServlet("/demo1")
public class ServletDemo1 implements Servlet {
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    public ServletConfig getServletConfig() {
        return null;
    }

    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello servlet");
    }

    public String getServletInfo() {
        return null;
    }

    public void destroy() {

    }
}

4.访问:启动Tomcat,浏览器输入URL访问该Servlet。

http://localhost:8080/web-demo/demo1

3. Servlet执行流程

Servlet对象由web服务器创建,Servlet方法由web服务器调用。

4. Servlet生命周期

对象的生命周期是指一个对象从被创建到被销毁的整个过程。

Servlet运行在Servlet(web服务器)中,其生命周期由容器来管理,分为4个阶段。

阶段发生时刻完成功能备注
加载和实例化默认情况下,当Servlet第一次被访问时容器创建Servlet对象

@WebServlet(urlPattern="/demo",loadOnStartup=1)

loadOnStartup的值决定了容器创建Servlet对象的时刻。

  • 负整数:Servlet第一次被访问时创建Servlet对象。
  • 0或正整数:服务器启动时创建Servlet对象。(数字越小优先级越高)
初始化在Servlet实例化之后容器将调用Servlet对象的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作init()方法只调用一次
请求处理每次请求Servlet时Servlet容器都会调用Servlet对象的service()方法对请求进行处理
服务终止当需要释放内存或者容器关闭时容器就会调用Servlet对象的destroy()方法完成资源的释放destroy()方法只调用一次

Servlet其他方法介绍

上面表格涉及到init()方法、service()方法、destroy()方法。此外Servlet对象还存在两个不常用的方法:

获取ServletConfig对象

ServletConfig getServletConfig()

获取Servlet信息

String getServletInfo()

5. Servlet体系结构

我们将来开发B/S架构的web项目,都是针对HTTP协议,所以我们自定义Servlet,会继承HttpServlet

5.1 HttpServlet使用步骤

  • 继承HttpServlet。
  • 重写doGet方法和doPost方法。

5.2 HttpServlet原理

HTTP 协议中,GET 和 POST 请求方式的数据格式不一样,将来要想在Servlet中处理请求参数,得在service方法中判断请求方式,并且根据请求方式的不同,分别调用不同的doXxx方法:

6. Servlet urlPattern配置

6.1 精确匹配

6.2 目录匹配

6.3 扩展名匹配

6.4 任意匹配

 

/ 和 /* 区别

  • 当我们的项目中的Servlet配置了“/”,会覆盖掉tomcat中的DefaultServlet,导致静态资源不能被访问。当其他的 url-pattern都匹配不上时都会走这个Servlet。
  • 当我们的项目中配置了“/*”,意味着匹配任意访问路径 。

优先级

精确路径 > 目录路径 > 扩展名路径 > /* > /

7. XML 配置方式编写 Servlet

Servlet 从3.0版本后开始支持使用注解配置,3.0版本前只支持 XML 配置文件的配置方式。

步骤:

  • 编写Servlet类。
  • 在web.xml中配置该Servlet类。

web.xml

<!--Servlet全类名-->
    <servlet>
        <servlet-name>demo8</servlet-name>
        <servlet-class>com.ydh.ServletDemo8</servlet-class>
    </servlet>

    <!--Servlet访问路径-->
<servlet-mapping>
        <servlet-name>demo8</servlet-name>
        <url-pattern>/demo8</url-pattern>
</servlet-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值