JavaWeb学习(3)(Servlet详细、Servlet的三种实现方式(面试)、Servlet的生命周期、传统web.xml配置Servlet(了解))

目录

一、Servlet详细。

(1)基本介绍。

(2)基本作用。

1、接收客户端请求数据。

2、处理请求。

3、完成响应结果。

二、Servlet的三种实现方式。

(1)实现javax.servlet.Servlet接口。

1、基本介绍。

2、代码演示。

(2)继承javax.servlet.GenericServlet类。

(3)继承javax.servlet.HttpServlet类。

三、Servlet的生命周期。

(1)xxx的生命周期?

(2)Servlet的生命周期相关方法。


一、Servlet详细。

(1)基本介绍。
  • Servlet 是一种运行在服务器端的 Java 程序。它使用 Java 语言编写,用于扩展服务器的功能。
  • Servlet 主要用于 Web 应用程序,它们可以响应客户端的请求,并生成响应。比如生成 HTML、XML 或 JSON 格式的文档。

(2)基本作用。
  • Servlet的作用:处理客户端浏览器的请求,然后服务器会把接收到的请求交给Servlet来处理,最终进行响应。
1、接收客户端请求数据。
  • 如登录表单。用户提交登录表单,发送登录请求。
  • 服务器接收用户的请求并交给(LoginServlet)进行处理。
2、处理请求。
  • LoginServlet处理:接收客户端用户传递的数据并进行校验是否合法。
  • 校验完成后,根据校验的结果进行响应。
3、完成响应结果。
  • 如果登录校验成功,响应登录成功的信息,并进行页面的跳转。(如:index.jsp)
  • 如果登录校验成功,响应登录失败的信息,并进行错误的提示!

二、Servlet的三种实现方式。

(1)实现javax.servlet.Servlet接口。
1、基本介绍。

推荐指数:低

  • 可以查阅javaEE的API文档。


  • 方法介绍。重点关注:service()方法


  • 因为实现一个接口,就要重写里面的所有方法。
  • 这种实现Servlet的方式过于麻烦,一般不推荐!

2、代码演示。
  • 创建AServlet类,并实现Servlet接口。
package com.fs.web;

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

/**
 * @Title: AServlet
 * @Author HeYouLong
 * @Package com.fs.web
 * @Date 2024/11/20 上午11:38
 * @description:
 */
public class AServlet implements Servlet {
    private ServletConfig servletConfig;

    /**
     * 初始化方法, Servlet类的对象创建之后, 才去调用init()
     * @param servletConfig
     * @throws ServletException
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("AServlet出生了!");
        this.servletConfig = servletConfig;
    }

    /**
     * 获取Servlet相关的配置。如:绑定的url
     * @return
     */
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    /**
     * 服务方法:  处理客户端请求的方法
     *  客户端每请求该Servlet一次, service() 方法就执行一次
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Aservlet为您服务!");
        //获取Servlet的配置信息
        String v1 = servletConfig.getInitParameter("k1");
        String v2 = servletConfig.getInitParameter("k2");
        System.out.println("k1=" + v1 + ", k2=" + v2);
        //第二种获取
        System.out.println("===============================================");
        Enumeration<String> names = servletConfig.getInitParameterNames();
        while (names.hasMoreElements()){
            String name = names.nextElement();
            String value = servletConfig.getInitParameter(name);
            System.out.println(name + "=" + value);
        }
    }

    /**
     * 获取Servlet的描述信息。无关紧要的方法
     * @return
     */
    @Override
    public String getServletInfo() {
        return "";
    }

    /**
     * 销毁方法, 当该Servlet被销毁之前,调用该方法
     */
    @Override
    public void destroy() {
        System.out.println("AServlet要死了~_~");
    }
}
  • 传统的web.xml中配置AServlet。(后面的学习都是使用注解"@...xx"
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--配置AServlet-->
    <servlet>
        <servlet-name>AServlet</servlet-name>
        <servlet-class>com.fs.web.AServlet</servlet-class>
        <!--初始化参数-->
        <init-param>
            <param-name>k1</param-name>
            <param-value>v1</param-value>
        </init-param>
        <init-param>
            <param-name>k2</param-name>
            <param-value>v2</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <!--通过servlet-name关联servlet标签-->
        <servlet-name>AServlet</servlet-name>
        <url-pattern>/AServlet</url-pattern>
    </servlet-mapping>
    
</web-app>
  • 第一次请求的运行结果。初始化一次、服务一次、成功获取web.xml的配置信息。

(2)继承javax.servlet.GenericServlet类。

推荐指数:一般

  • 查阅javaEE的API文档。
  • 注意GenericServlet类是抽象类
  • GenericServlet类也是Servlet接口的一个实现类!


  • 方法介绍。abstract void service(request对象,response对象)

(3)继承javax.servlet.HttpServlet类。

推荐指数:高!

  • 专门处理客户端浏览器的http请求的类。
  • HttpServletGenericServlet的已知实现子类后期的学习都是使用这个类


  • 重点方法。doDelete()doGet()doPost()doPut()service()方法。

  • 后面可能会演示。可以自己进行尝试。该实现方式很方便!相对简单很多!也很重要

三、Servlet的生命周期。

(1)xxx的生命周期?
  • 所谓生命周期,就是说某某的的出生、服务,以及死亡而Servlet生命周期也是如此!
  • Servlet对象创建,不需要程序员手动创建new,而是由Tomcat服务器创建。
  • init()service()destroy()三个方法都是由Tomcat服务器完成调用。称生命周期方法。

(2)Servlet的生命周期相关方法。
  • void init(ServletConfig对象)

  • Tomcat服务器启动时不会创建。

  • 只有第一次请求时,才会初始化,调用init()方法。并创建Servlet对象,


  • void service(ServletRequest对象,ServletResponse对象)

  • 当处理请求时就会调用。如刷新一次,重新请求,就会调用一次service()方法。


  • void destroy()

  • Tomcat服务器关闭之前,先执行该方法,销毁创建的Servlet对象。


  • 通过AServlet类三种方法调用的演示结果。Servlet对象创建、服务、销毁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

岁岁岁平安

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

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

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

打赏作者

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

抵扣说明:

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

余额充值