IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Servlet(二) -> 正文阅读

[Java知识库]Servlet(二)

一、Servlet API

1、Servlet 接口

Servlet API 的核心是 javax.servlet.Servlet 接口,所有的 Servlet 类都必须实现这一接口。
Servlet接口的相关方法在 **Servlet(一)**中已经介绍过了,这里不再讲解。

在 Servlet API 中,javax.servlet.GenericServlet 抽象类实现了 Servlet 接口,而 javax.servlet.http.HttpServlet 抽象类是 GenericServlet 类的子类。当用户开发自己的 Servlet 类时,可以选择扩展 GenericServlet 类或者 HttpServlet 类(建议使用 HttpServlet 类)。

2、GenericServlet 接口

GenericServlet 类的主要源代码:

package javax.servlet;

import java.io.IOException;
import java.io.Serializable;
import java.util.Enumeration;

public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {
    private static final long serialVersionUID = 1L;
    private transient ServletConfig config;

    public GenericServlet() {
    }

    public void destroy() {
    }

    public String getInitParameter(String name) {
        return this.getServletConfig().getInitParameter(name);
    }

    public Enumeration<String> getInitParameterNames() {
        return this.getServletConfig().getInitParameterNames();
    }

    public ServletConfig getServletConfig() {
        return this.config;
    }

    public ServletContext getServletContext() {
        return this.getServletConfig().getServletContext();
    }

    public String getServletInfo() {
        return "";
    }

    public void init(ServletConfig config) throws ServletException {
        this.config = config;
        this.init();
    }

    public void init() throws ServletException {
    }

    public void log(String msg) {
        this.getServletContext().log(this.getServletName() + ": " + msg);
    }

    public void log(String message, Throwable t) {
        this.getServletContext().log(this.getServletName() + ": " + message, t);
    }

    public abstract void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

    public String getServletName() {
        return this.config.getServletName();
    }
}

分析:
(1)GenericServlet 类除了实现 Servlet 接口,还实现了 ServletConfig 接口和 Serializable 接口。
(2)从 GenericServlet 类的源代码可以看出,GenericServlet 类实现了 Servlet 接口中 init(ServletConfig config)初始化方法。GenericServlet 类有一个 ServletConfig 类型的的私有实例变量 config。当 Servlet 容器调用 GenericServlet 的init(ServletConfig config)方法时,该方法是的私有实例变量 config 引用由容器传入的 ServletConfig 对象,即使得 GenericServlet 对象与一个 ServletConfig 对象关联。
(3)GenericServlet 类还自定义了一个不带参数的 init() 方法,init(ServletConfig config)方法会调用此方法。对于 GenericServlet 类的子类,如果希望覆盖弗雷德初始化行为,有两种方法:

  1. 覆盖父类的不带参数的 init() 方法
public void init() {
	// 子类具体的初始化行为
	...
}
  1. 覆盖父类的带参数的 init(ServletConfig config)方法。如果希望当前 Servlet 对象与 ServletConfig 对象关联,应该在该方法中先调用 super.init(config)方法:
public void init(ServletConfig config){
	super.init(config); // 调用父类的 init(config) 方法
	// 子类具体的初始化行为
	...
}

(4)GenericServlet 类没有实现 Servlet 接口中的 service() 方法,service() 方法是 GenericServlet 类中唯一的抽象方法,GenericServlet 类的具体子类必须实现该方法,从而为特定的客户请求提供具体的服务。
(5)GenericServlet 类尽管实现了 Servlet 接口中的 destroy() 方法,实际上什么也没做。GenericServlet 类的具体子类可以覆盖该方法,从而为待销毁的当前 Servlet 对象释放所占用的各种资源(例如关闭文件输入流和输出流,关闭与数据库的连接等)。
(6)GenericServlet 实现了 ServletConfig 接口中的所有方法。因此,GenericServlet 类的子类可以直接调用在 ServletConfig 接口中定义的 getServletContext()、getInitParameter() 和 getInitParameterNames() 等方法。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章           查看所有文章
加:2021-08-31 15:19:02  更:2021-08-31 15:21:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:22:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码