【原创】Servlet学习之(二)Servlet API - javax.servlet软件包

2020-05-15 18:18发布

Servlet学习之(二)Servlet API - javax.servlet软件包

Servlet是一个实现了Servlet接口的类,一个与访问协议和平台无关的、运行在Servlet容器中的Java程序。

针对Servlet实现技术,SUN公司提供了一套标准的Java Servlet API以便于更快速、规范地开发Servlet程序。这套Servlet API中,最重要的两个软件包是:javax.servletjavax.servlet.http

javax.servlet是一个与通信协议无关的通用软件包;javax.servlet.http是一个支持HTTP访问协议的软件包,这两个软件包的同时存在,使得Servlet API能支持任何协议的请求/响应。

javax.servle中,包含着一套常用接口,负责承担指定的任务。下表中列出了常用的类和接口:

分类

接口(类)名

描述

所属软件包

Servlet实现相关接口和抽象类

Servlet接口

Servlet基础接口

javax.servlet

GenericServlet抽象类

实现Servlet接口的抽象类

HttpServlet抽象类

GenericServlet派生的抽象子类

javax.servlet.http

请求与响应相关接口

ServletRequest接口

请求对象接口

javax.servlet

ServletResponse接口

响应对象接口

HttpServletReques接口

ServletRequest派生的子接口

javax.servlet.http

HttpServletResponse接口

ServletResponse派生的子接口

Servlet配置接口

ServletConfig接口

Servlet配置信息接口

javax.servlet

Servlet上下文接口

ServletContext接口

Servlet上下文环境接口

资源转发接口

RequestDispatcher接口

服务器内部实现资源转发接口

 

主要类结构图:

 

一、javax.servlet软件包

javax.servlet包中定义了与通信协议无关的接口和类。

常用接口:

RequestDispatcherServletServletConfigServletContextServletRequestServletResponse

常用类:

GenericServletServletInputStreamServletOutputStream

1、RequestDispatcher接口

public interface RequestDispatcher;

资源调度器接口,用于定义一个服务器内部直接实现资源转发对象。

RequestDispatcher对象Servlet容器创建用于封装并调度由一个特定的URL定义的服务器资源。

1)请求传递方法

public void forward(ServletRequest request,

ServletReponse response) throws ServletException,IOException

一个Servlet服务器上的另一个资源传递请求。

将请求转发给其他资源时,将由被调用的资源负责对请求作出响应而原先Servlet的执行则终止。

 

public void include(ServletRequest request,

ServletResponse response) throws ServletException,IOException

一个Servlet服务器上的另一个资源传递请求。

将请求转发给其他资源时被调用的Servlet对该请求作出的响应将并入原先的响应对象中,原先的Servlet还可以继续输出响应消息。

2、Servlet接口

public interface Servlet;

开发一个Servlet需要实现的基础接口。

接口中定义了5个方法:

init()Servlet初始化方法,通过init()方法可以获得容器创建的ServletConfig对象

service():请求处理方法

destroy()Servlet实例销毁方法

getServletConfig():获取ServletConfig配置对象方法

getServletInfo():获取Servlet相关信息方法

1)初始化方法

public void init(ServletConfig config) throws ServletException

Servlet容器会在Servlet实例化之后,调用init方法Servlet对象进行初始化,该方法由Servlet容器顺序调用,无需Servlet自身考虑何时执行

2)服务方法

public void service(ServletRequest request,

ServletResponse response) throws ServletException,IOException

Servlet容器接收到客户请求时,调用service方法响应客户请求service方法在Servlet实例化、初始化之后被调用,并且可以被多次调用

3)销毁方法

public void destroy()

Servlet实例从服务移除或服务停止时,Servlet容器调用destroy方法销毁Servlet实例

4)获取Servlet配置对象方法

public ServletConfig getServletConfig()

获取一个Servlet容器创建的ServletConfig配置对象,这个对象常常用在Servlet初始化方法中,将初始化参数封装在ServletConfig对象中,然后传递给Servlet

5)获取Servlet相关信息方法

public String getServletInfo()

获取关于Servlet一些相关信息返回的字符串是纯文本格式而不带有任何标记(例如HTMLXML等)。

3、ServletConfig接口

public interface ServletConfig;

Servlet配置信息接口,Servlet初始化时,Servlet容器Servlet初始化参数封装在ServletConfig对象中,并传递给Servlet,一个Servlet实例只有一个ServletConfig对象。

接口中,只定义了4个方法:

getInitParameter():获取Servlet指定初始化参数的值 

getInitParameterNames():获取Servlet所有初始化参数名称 

getServletContext():获取Servlet容器为WEB应用创建Servlet上下文环境对象ServletContext

getServletName():获取Servlet名称

1)获取初始化参数方法

public String getInitParameter(String name)

根据初始化参数名称,获取Servlet指定初始化参数的值,如果指定的参数不存在,返回null

 

public Enumeration getInitParameterNames()

获取Servlet所有初始化参数名称,如果Servlet没有初始化参数,返回一个空列表。

2)获取Servlet上下文环境方法

public ServletContext getServletContext()

获取Servlet容器为WEB应用创建Servlet上下文环境对象ServletContextWEB服务器启动的时候,在加载WEB应用时,为每个加载的WEB应用创建一个代表WEB应用Servlet上下文环境对象

3)获取Servlet名称方法

public String getServletName()

获取正在访问的这个Servlet的名称。

 

4、ServletContext接口

public interface ServletContext

Servlet运行环境对象通过这个对象Servlet容器Servlet提供相关运行环境信息。

一个Servlet上下文环境对象与