Servlet技术快速入门笔记

目录

一.Servlet 概述

二.Servlet 快速入门

三.Servlet 执行流程

1.Servlet由谁创建?Servlet方法由谁调用?

 2.服务器怎么知道Servlet中一定有Service方法?

四.Servlet 生命周期

五.Servlet 方法介绍

六.Servlet的体系结构

七.Servlet urlPatterns配置


一.Servlet 概述

  •  Servlet 是 Java 提供的一门动态的Web资源开发技术 
  •  Servlet 是 JavaEE 规范之一,其实就是一个接口,将来我们需要定义 Servlet类 实现 Servlet接口,并由Web服务器(Tomcat....)运行 Servlet 

二.Servlet 快速入门

  1. 创建 Web项目,导入 Servlet 依赖坐标
    <dependency>
        <gourpId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</groupId>
        <version>3.1.0</version>
        <scope>provided</scope> 
    <!-- 一定要加这个,否则会报错,因为Tomcat服务器内已经装了这个,不加会冲突-->
    </dependency>
  2. 定义一个类,实现 Servlet 接口,并重写接口中所有方法,并在 Service 方法中输出一句话
    public class ServletDemo1 implements Servlet{
        public void service(){
            System.out.println("Hello Servlet From Hogwarts !!! ");
        }
    }

  3. 配置:在类上使用 @WebServlet 注解,配置该 Servlet 的访问路径
    @WebServlet("/demo1") //记住一定要加 / 否则运行会报错
    public class ServletDemo1 implements Servlet{
        public void service(){
            System.out.println("Hello Servlet From Hogwarts !!! ");
        }
    }
    
    ​


三.Servlet 执行流程

1.Servlet由谁创建?Servlet方法由谁调用?

  •  Servlet 由 Web服务器  创建
  •  Servlet方法 由 Web服务器  调用

 2.服务器怎么知道Servlet中一定有Service方法?

  • 因为我们定义的 Servlet 必须 实现 Servlet 接口 并 复写方法,而 Servlet接口 中有 Service方法

四.Servlet 生命周期

  • 对象的生命周期 指一个对象的从 被创建 到 被销毁 的整个过程
  • Servlet 运行在 Servlet容器(Web服务器)中,其 生命周期 由容器管理,分为 4 个阶段
  1. 加载和实例化:默认情况下,当 Servlet 第一次被访问时,由容器创建 Servlet对象
  2. 初始化:在 Servlet 实例化 之后,容器调用 Serlvet 的 init()方法 初始化这个对象,完成一些如加载配置文件,创建连接等初始工作。该方法只调用一次。
  3. 请求处理:每次 请求 Servlet 时,Servlet容器 都会调用 Servlet的service()方法对请求进行处理
  4. 服务终止:当需要 释放内存 或 容器关闭 时,容器就会调用 Servlet实例的destory()方法 完成资源的释放。在destory()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾回收器 回收

加载与实例化的非默认情况

        

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

    //负整数(默认):第一次访问时创建Servlet对象
    //0或正整数:服务器启动时创建Servlet对象,数字越小,优先级越大   

五.Servlet 方法介绍

  • 初始化方法:在 Servlet 被创建时执行,只会执行一次
    void init(ServletConfig config);

  • 提供服务的方法:每次 Servlet 被访问,都会调用该方法
    void service(ServletRequest req,ServletResponse resp);

  • 销毁方法:当 Servlet 被销毁时,调用该方法。在 内存释放、服务器关闭 时销毁Servlet,不包括非正常状态,例如Kill
    void destory();

  • 获取 ServletConfig 对象
    ServletConfig getServletConfig();


六.Servlet的体系结构

        GenericServlet 中的 service方法 是抽象方法

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

HttpServlet的原理:

        获取请求方式,并根据不同的请求方式,调用不同的doXXX方法

接下来我们看到的HttpServlet具体的使用:

  1. 继承HttpServlet
  2. 重写doGet和doPost方法
    public class ServletDemo extends HttpServlet{
        @Override
        protected void doGet(HttpServletRequest req,HttpServletResponse resp){
            //TODO: Get请求方式处理逻辑
        }
        @Override
        protected void doPost(HttpServletRequest req,HttpServletResponse resp){
            //TODO: Post请求方式处理逻辑
        }
    }

七.Servlet urlPatterns配置

  • Servlet 要想被访问,必须配置其访问路径(urlPatterns)
  • 一个Servlet,可以配置多个访问路径
    @WebServlet(urlPatterns = {"/demo1","/demo2"}) //记住 / 不能丢嗷

 下面介绍本章的重点urlPatterns的配置规则

  1. 精确匹配:
    @WebServlet("/user/select")           //配置路径
    
    localhost:8080/web-demo/user/select   //访问路径

  2. 目录匹配:
    @WebServlet("/user/*")                 //配置路径
    
    localhost:8080/web-demo/user/aaa       //访问路径,可以有很多很多个
    localhost:8080/web-demo/user/bb        

  3. 扩展名匹配:
    @WebServlet("*.zip")                   //配置路径
    
    localhost:8080/web-demo/aaa.zip        //访问路径,可以有很多很多个
    localhost:8080/web-demo/bbb.zip  

  4. 任意匹配:
    @WebServlet("/") 或者 @WebServlet("/*")         //配置路径
    
    localhost:8080/web-demo/hehe                   //访问路径,可以有很多很多个
    localhost:8080/web-demo/haha  

 / 和 /* 的区别:

  • 当一个Servlet配置了“/”,会覆盖掉Tomcat中的DefaultServlet(默认的网页),此时其他的访问路径若都匹配不上时就会走这个Servlet
  • 当一个Servlet配置了“/*”,意为着它可以匹配任意的访问路径
  • 一般不建议使用这个
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值