Servlet简单介绍(二)

前言

    前面说到Servlet的由来、工作流程及创建等,这篇文章继续说下servlet的API。

正文

一、概览-Servlet API中主要的接口和类

这里写图片描述

二、Servlet 接口

    要编写一个Servlet,需要实现javax.servlet.Servlet接口,该接口定义了5个方法

//1、Servlet容器通过ServletConfig 参数向Servlet传递配置信息
public void init(ServletConfig  config) throws ServletException
//2、处理客户端的请求
public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException
//3、 释放Servlet 对象的资源,随后该对象会被java的垃圾收集器所回收
public  void destory()
//4、ServletConfig对象包含了Servlet的初始化参数,传递给init方法
public ServletConfig getSevletConfig()
//5、该方法返回关于Servlet的信息
public java.lang.string getServletInfo()

三、ServletResquest 和 ServletResoponse 接口

    Servlet 由 Servlet 容器来管理,当客户请求到来时,容器创建一个ServletRequest 对象,封装请求数据,同时创建一个ServletResponse对象,封装响应数据。Servlet利用ServletRequest对象处理客户端发来的请求数据,利用ServletResponse对象发送响应数据。
    这两种对象常用的方法在这里就不做介绍了,用到了可以去查看API 文档。

四、ServletConfig 接口

    Servlet 容器使用ServletConfig对象在Servlet初始化期间向它传递配置信息,一个Servlet只能有一个ServletConfig对象。

// 返回名字为name 的初始化参数的值,该初始化参数在web.xml配置文件中进行配置
public java.lang.String getInitParameter(java.lang.String name)
// 返回Servlet所有初始化参数的名字的枚举集合 
public java.util.Enumeration getInitParameterNames() 
// 返回Servlet上下文对象的引用
public ServletContext getServletContext()
//返回Servlet 实例的名字,这个名字是在Web应用程序的web.xml配置文件中指定的
public java.lang.String getServletName()

五、GenericServlet 类

为了简化Servlet 的编写,在javax.servlet包中提供了一个抽象的类GenericServlet,她给出了除service()方法外的其他4个方法的简单实现。GenericServlet类定义了一个通用的、不依赖于具体协议的Servlet,它实现了Servlet接口和ServletConfig接口。

public abstract class GenericServlet extends java.lang.Object implements Servlet,ServletConfig,java.io.Serializable  

如果我们要编写一个通用的Servlet,只需要从GenericServlet类继承,并实现其中的抽象方法service()。
在GenericServlet类中,定义了两个重载的init()方法:

public void init(ServletConfig config) throws ServletException 
public vid init() throws ServletException 

第一个init()方法是Servlet接口中init()方法的实现。在这个方法中,首先讲ServletConfig 对象保存在一个transient实例变量中(用transient关键字标记的成员变量不参与序列化过程),然后调用第二个不带参数的init()方法。

六、HttpServlet

    为了快递开发应用于HTTP协议的Servlet 类,Sun公司在javax.servlet.http 包中提供了一个抽象的类HttpServlet,它继承自GenericServlet类,用于创建适合web站点的HTTP Servlet.

public abstract class HttpServlet extends GenericServvlet implements java.io.Serializable 

    在HttpServlet类中提供了两个重载的service()方法:

public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException 
protected void service(HttpServletRequest req,HttpServletResponse res) throws ServletException,java.io.IOException 

    第一个service()方法是GenericServlet类中service()方法的实现,这个方法中,首先将req和res对象转换为HttpServletRequest(继承自ServletRequest 接口)和HttpServletResponse(继承自ServletResponset 接口)类型,然后调用第二个service() 方法,对客户请求进行处理。

七、HttpServletRequest 和 HttpServletResponse接口

HttpServletRequest中的方法 描述
getContextPath() 返回请求上下文的部分
getCookies() 返回客户端在此次请求中发送的所有Cookie对象
getHeader(String name) 返回名字为name的请求报头的值
getMethod() 返回此次请求所使用的HTTP方法的名字
getQueryStrig() 返回请求URL中在路径后面的查询字符串
HttpServletResponse中的方法 描述
addCooke(Cookie cookie) 增加一个Cookie到响应中
addHeader(String name,String value)() 用给出的name和value 增加一个响应报头到响应中
contaisHeader(String name) 判断以name为名字的响应报头是否已经设置
sendRedirect(String location) 发送一个临时的重定向响应到客户端,让客户端访问新的URL
setStatus(int sc) 为响应设置状态代码

总结

     感谢您的阅读,在一次次http 请求和响应中不断熟悉以上内容,下期再会!

猜你喜欢

转载自blog.csdn.net/zt15732625878/article/details/80950126