Javaweb - Servlet入门案例、执行流程、生命周期、servlet接口一些方法演示

Servlet简介

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

Servlet快速入门

请添加图片描述

导入Servlet依赖坐标

编辑pom.xml

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

刷新后导入成功

请添加图片描述

新建测试类

请添加图片描述

package com.taotao.web;

import javax.servlet.*;
import java.io.IOException;


public class ServletDemo01 implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

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

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

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

    @Override
    public void destroy() {

    }
}

注解写上访问路径

demo1是自定义命名

请添加图片描述

运行测试

点击进入网址

请添加图片描述

输入demo1

请添加图片描述

控制台输出

请添加图片描述

Servlet执行流程

流程图

请添加图片描述

Servlet生命周期

请添加图片描述

方法演示(init,service,destroy)

复制黏贴ServletDemo01类

请添加图片描述

package com.taotao.web;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet("/demo2")
public class ServletDemo02 implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

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

    @Override
    public void destroy() {

    }

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

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

init()

    /**
     * 初始化方法
     * 1.调用实际:默认情况下,Servlet波第一次访问时,调用
     * 2.调用次数:一次
     */

请添加图片描述

不启动servlet的情况下调用init()

请添加图片描述

service()

    /**
     * 提供服务
     * 1.调用时机:每一次servlet被访问时,调用
     * 2.调用次数,多次
     */

请添加图片描述

destroy()

/**
 * 销毁方法
 * 1.调用时机:内存释放或者服务器关闭的时候,Servlet对象会被销毁,调用
 * 2.调用次数:1次
 *
 */

直接关闭服务器不会调用

请添加图片描述

调用举例

请添加图片描述

请添加图片描述

启动servlet(mvn tomcat7:run)

请添加图片描述

等待下载组件…等了2分钟

请添加图片描述

启动完成

请添加图片描述

关闭servlet

ctrl + c

请添加图片描述

getServletConfig()

因为此方法返回的是一个ServletConfig对象,但是我们又没有这个对象,所以默认return null

但是,为了验证返回ServletConfig对象,我们可以private一个成员变量,当我们启动Servlet时

源码举例
package com.taotao.web;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet(urlPatterns = "/demo2",loadOnStartup = 1)
@SuppressWarnings({"all"})
public class ServletDemo02 implements Servlet {
    private ServletConfig config;

    /**
     * 初始化方法
     * 1.调用实际:默认情况下,Servlet波第一次访问时,调用
     * 2.调用次数:一次
     * @param servletConfig
     * @throws ServletException
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        this.config = config;
        System.out.println("init....");
    }

    /**
     * 提供服务
     * 1.调用时机:每一次servlet被访问时,调用
     * 2.调用次数,多次
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("servlet hello world");
    }

    /**
     * 销毁方法
     * 1.调用时机:内存释放或者服务器关闭的时候,Servlet对象会被销毁,调用
     * 2.调用次数:1次
     *
     */
    @Override
    public void destroy() {
        System.out.println("destroy被调用");
    }

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

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

getServletInfo()

获取Servlet信息,不再演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼鬼骑士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值