Servlet--ServletConfig接口,GenericServlet接口

  • ServletConfig接口

定义:public interface ServletConfig

这个接口定义了一个对象, 通过这个对象, Servlet 引擎配置一个 Servlet 并且允许 Servlet获得一个有关它的 ServletContext 接口的说明。每一个 ServletConfig 对象对应着一个唯一的Servlet。

方法:

1、getInitParameter

public String getInitParameter(String name);

这个方法返回一个包含 Servlet 指定的初始化参数的 String。 如果这个参数不存在, 返加空值。

2、getInitParameterNames

public Enumeration getInitParameterNames();

这个方法返回一个列表 String 对象,该对象包括 Servlet 的所有初始化参数名。如果Servlet 没有初始化参数,getInitParameterNames 返回一个空的列表。

3、getServletContext

public ServletContext getServletContext();

返回这个 Servlet 的 ServletContext 对象。

  • GenericServlet接口

public abstract class GenericServlet implements Servlet,ServletConfig, Serializable;

这个类的存在使得编写 Servlet 更加方便。它提供了一个简单的方案,这个方案用来执

行有关Servlet生命周期的方法以及在初始化时对ServletConfig对象和ServletContext对象进

行说明。

方法

1、destroy

public void destroy();

在这里 destroy 方法不做任何其他的工作。

2、getInitParameter

public String getInitParameter(String name);

这是一个简便的途径,它将会调用 ServletConfig 对象的同名的方法。

3、getInitParameterNames

public Enumeration getInitParameterNames();

这是一个简便的途径,它将会调用 ServletConfig 对象的同名的方法。

4、getServletConfig

public ServletConfig getServletConfig();

返回一个通过这个类的 init 方法产生的 ServletConfig 对象的说明。

5、getServletContext

public ServletContext getServletContext();

这是一个简便的途径,它将会调用 ServletConfig 对象的同名的方法。

6、getServletInfo

public String getServletInfo();

返回一个反映 Servlet 版本的 String。

7、init

public void init() throws ServletException;

public void init(ServletConfig config) throws ServletException;

init(ServletConfig config)方法是一个对这个 Servlet 的生命周期进行初始化的简便的途径。

init(ServletConfig config)方法会存储config对象然后调用init() 。 如果你重载了这个方法 ,你必须调用 super.init(config),这样 GenericServlet 类的其他方法才能正常工作。

init()方法是用来让你对 GenericServlet 类进行扩充的,使用这个方法时,你不需要存储config 对象,也不需要调用 super.init(config)。

8、 log

public void log(String msg);

public void log(String msg, Throwable cause);

通过 Servlet content 对象将 Servlet 的类名和给定的信息写入 log 文件中。

9、 service

public abstract void service(ServletRequest request, ServletResponse response) throws ServletException, IOException;

这是一个抽象的方法,当你扩展这个类时,为了执行网络请求,你必须执行它。

package javax.servlet;

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

public abstract class GenericServlet implements Servlet, ServletConfig, Serializable
{
	//这里封装一个ServletConfig对象,每一个 ServletConfig 对象对应着一个唯一的Servlet。
	private transient ServletConfig config;

	public void destroy()
	{
	}

	//这是一个简便的途径,它将会调用 ServletConfig 对象的同名的方法。以下3个方法都是:
	public String getInitParameter(String name)
	{
		return getServletConfig().getInitParameter(name);
	}

	public Enumeration getInitParameterNames()
	{
		return getServletConfig().getInitParameterNames();
	}

	//Servlet引擎配置一个 Servlet,并且允许 Servlet,获得一个有关它的 ServletContext 接口的说明
	public ServletContext getServletContext()
	{
		return getServletConfig().getServletContext();
	}

	//我们常常在自己写的Servlet用这个方法,其实就是在这里被继承过去的
	public ServletConfig getServletConfig()
	{
		return this.config;
	}

	public String getServletInfo()
	{
		return "";
	}

	//重写Servlet的init方法
	public void init(ServletConfig config) throws ServletException
	{
		this.config = config;
		init();
	}

	public void init() throws ServletException
	{
	}

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

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

	//推迟到子类实现,这里仍然是抽象方法
	public abstract void service(ServletRequest paramServletRequest, ServletResponse paramServletResponse) throws ServletException, IOException;

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

时间: 2024-08-07 04:32:47

Servlet--ServletConfig接口,GenericServlet接口的相关文章

[Servlet]深入研究GenericServlet

GenericServlet概述 如果我们直接通过实现Servlet接口来编写一个Servlet类,就需要实现Servlet接口定义的5种方法,为了简化Servlet的编写,在javax.servlet包中提供了一个抽象类GenericServlet,该类提供了除service()方法外的其他4种方法的简单实现.GenericServlet类定义了一个通用的.不依赖于具体协议的Servlet,它实现了Servlet接口和ServletConfig接口. public abstract class

Servlet的优化.GenericServlet

如何更好的使用servlet?GernericServlet可以由自己仿照一个出来,下面就是介绍了如何写这样的一个类 1.init方法 妥善的保存config对象 2.空参init方法,为了防止开发人员重写 原生init方法 3.service方法空实现=> 声明城抽象 4.destory方法空实现 5.实现getServletInfo,getServletConfig 6.实现了servletConfig接口. 接口中的方法直接调用config实现类实现. 代码实现 package ming.

C# 基础知识复习(十)---接口与接口继承

1.接口必须I开头: 2.只有申明,没有实现: 3.实现类在实现方法时,必须名字与接口一致: 4.实现类在实现继承接口时,必须把父接口的方法一并实现: 5.接口申明,默认是public的,这一点与class不同. C# 接口(Interface) 接口定义了所有类继承接口时应遵循的语法合同.接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做" 部分. 接口定义了属性.方法和事件,这些都是接口的成员.接口只包含了成员的声明.成员的定义是派生类的责任.

Delphi 的接口机制——接口操作的编译器实现过程(1)

学习COM编程技术也快有半个月了,这期间看了很多资料和别人的程序源码,也尝试了用delphi.C++.C#编写COM程序,个人感觉Delphi是最好上手的.C++的模版生成的代码太过复杂繁琐,大量使用编译宏替代函数代码,让初学者知其然而不知其所以然:C#封装过度,COM编程注定是要与操作系统频繁打交道的,需要调用大量API函数和使用大量系统预定义的常量与类型(结构体),这些在C#中都需手工声明,不够简便:Delphi就简单多了,通过模版创建的工程代码关系结构非常清晰,而且其能非常容易使用API函

接口、接口优点、接口的属性和方法特性、接口与继承的区别、接口与抽象类的区别、匿名实现类、JDK1.8新特性、打印类名称

接口里的属性,必须是公共的/默认的&静态的&Final&初始化后的属性: 接口里所有方法都是抽象的. 接口和继承---先天有的用继承,后天学习的用接口: 接口特性-------- 1.接口不可以被实例化: 2.实现类必须实现接口中所有方法,否则实现类必须是抽象类 3.实现类可以实现多个接口,来弥补Java不能多继承: 4.接口中的变量都是静态常量:(静态的-可以通过类的名字点-直接调用:) ----------------------------------------------

接口,接口的定义

接口interface,顾名思义,是为了一种事物与另一种事物进行交流提供的通道(手段),例如我们现在的操作系统是Windows系统,我们见到的界面和各个功能的按钮都是图形用户接口,接口就是用户和应用程序内部交互的界面.接口实际上有两种含义:一是一个类所具有的方法的特征集合,是一种逻辑上的抽像:二是java接口,java语言中存在的结构,有特定的语法和结构,前者叫做"接口"后者叫做"java接口".本节我们研究的是java接口. java中的接口是一系列方法的声明,是

PHP - 接口 - 多接口

/* * 使用多接口 */ //定义接口1 interface IPerosn_one{ public function eat(); } //定义接口2 interface IPerson_two{ public function run(); } //定义接口3 interface IPerson_three{ public function water(); } //定义继承自接口的类 class Menperson implements IPerosn_one,IPerson_two,I

类与类、类与接口、接口与接口之间的继承个数问题

1.类与类之间可以表示为继承的关系,用extends关键字表示的.这是因为如果一个类即继承了A类, 又继承了B类,若AB有两个相似的方法,没办法确定继承哪一个方法,所以类的继承只能是一对一的.但是一个类可以有多个子类, 一个类只能有一个父类. 2.类与接口之间可以表示为实现的关系,用implements关键字表示的.一个类可以实现多个接口.因为接口中的方法都是抽象的方法,只有形式没有具体实现,在类中实现.3.接口与接口之间之间可以表示为继承的关系,用extends关键字表示的,一个接口可以继承多

通过接口调用接口实现类实现松耦合(接口的多态)

项目开发在各个层中通过接口实现松耦合的时候,如何实现接口调用接口实现类? 这里的要求是接口有多个实现类,通过接口调用不的接口实现类! 开始,我想到了IOC(IOC最近忒火),确实有很多开发好的类库unity,ninject等等,但是这些类库都有点太强大了,例 如unity 是可以很容易实现我的要求,那么通过RegisterType<I, N>>(String name)注册:通过Resolve<I>(name) 就可以 用接口调用相应的接口实现类,如果想了解一下unity,