servlet api简介(一)

javax.servlet包中有9个类,如下,其中最后2个是异常类:

  • GenericServlet
  • ServletContextEvent
  • ServletContextAttributeEvent
  • ServletInputStream
  • ServletOutputStream
  • ServletRequestWrapper
  • ServletResponseWrapper
  • ServletException
  • UnavailableException

GenericServlet抽象类可以用于开发独立于协议的servlet,为此我们只需要实现service方法。然后日常编程中,更常见的是使用HttpServlet。

ServletContextEvent和ServletContextAttributeEvent是用于提供ServletContext及其属性的改变情况的事件类。

ServletInputStream和ServletOutputStream为与客户端通信,即发送和读取二进制数据提供了输入、输出流。

包装器类ServletRequestWrapper、ServletResponseWrapper提供了ServletRequest和ServletResponse接口的有用实现。我们可以从它们派生出子类,以增强包装对象的功能。

ServletException是servlet在遇到问题必须放弃时可以抛出的一个通用异常,抛出这个异常表明用户请求、处理请求或者发送响应时出了问题。这个异常抛到了servlet容器中以后,应用程序便失去了处理请求的控制权,容器会接着负责清理这些请求,并向客户返回一个响应。根据容器的实现和配置,容器可能向用户返回一个出错页面。

当一个过滤器或servlet临时或永久性地不可用时,应该抛出UnavailableException,可以应用在servlet请求的资源(数据库、DNS、其他servlet等等)不可用时。


Servlet接口

生命周期方法

所有的servlet必须实现Servlet接口。该接口定义了三个生命周期方法,由servlet容器调用:

  • public void init(ServletConfig config) throws ServletException
  • public void service(ServletRequest  req, ServletResponse res) throws ServletException, IOException
  • public void destroy()

servlet生命周期有着明确定义。客户向Web服务器发出一个请求,服务器再根据需要把请求重定向到servlet容器:

  1. servlet的加载和实例化有servlet容器负责。容器需要找到servlet类,加载并实例化,以供使用。
  2. 容器通过调用init方法来初始化servlet,传入init的参数是一个ServletConfig对象,描述了该servlet的运行环境。
  3. 若servlet没有成功初始化,则抛出UnavailableException或ServletException异常,该servlet会被释放,然后系统会试图实例并初始化一个新的servlet。
  4. 若servlet成功初始化,则表明servlet已经准备完毕,可以处理客户请求。请求和响应信息分别包装在ServletRequest、ServletResponse对象中,它们被传递到service方法中,由service方法负责处理请求并且返回响应信息。
  5. ServletException、UnavailableException异常都可以在请求处理时抛出。若抛出一个异常,则容器必须清理掉该请求,可能要卸载相应的实例并调用destroy方法。
  6. 一旦容器决定删除某个servlet,则必须允许任何service调用结束。之后再调用destroy方法,进而释放相应实例以便垃圾回收。

其他方法

在Servlet接口中还有更多的方法需要由servlet实现:

  • public ServletConfig getSerletConfig(),获取初始化参数。该
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值