网站链接: 环球网校培训
当前位置: 首页 > 资讯动态  > 平台资讯

Servlet接口

2025/12/29 23:07:38 人评论

Servlet接口Servlet接口是servlet API的主要抽象。所有servlet或者直接实现该接口,或者更常见的继承一个实现该接口的类。servlet API中有两个类实现了servlet接口,为GenericServlet和HttpServlet。大多数情况下,开发人员将继承HttpServlet以实现他们的servlet。2.1 请…

Servlet接口

Servlet接口是servlet API的主要抽象。所有servlet或者直接实现该接口,或者更常见的继承一个实现该接口的类。servlet API中有两个类实现了servlet接口,为GenericServlet和HttpServlet。大多数情况下,开发人员将继承HttpServlet以实现他们的servlet。

2.1 请求处理方法

Servlet接口定义了一个service方法来处理客户端请求。当servlet容器将每个请求传递给servlet实例时都会调用该方法。

Web应用处理并发请求通常要求web开发人员设计servlet的service方法可以多线程执行。

通常web容器通过不同线程并发执行service方法,处理对于同一个servlet的并发请求。

2.1.1 HTTP专有请求处理方法

HttpServlet抽象子类在Servlet接口基础上还添加了一些附加方法,由HttpServlet类的service方法自动调用,以处理基于HTTP的请求。这些方法是:

• doGet处理HTTP GET请求

• doPost处理HTTP POST请求

• doPut处理HTTP PUT请求

• doDelete处理HTTP DELETE请求

• doHead处理HTTP HEAD请求

• doOptions处理HTTP OPTIONS请求

• doTrace处理HTTP TRACE请求
 

通常在开发基于HTTP的servlet时,servlet开发人员自身只需要关心doGet和doPost方法。其他方法只为非常熟悉HTTP编程的程序员们使用。

2.1.2 附加方法

doPut和doDelete方法允许Servlet开发人员支持采用这些特性的HTTP/1.1客户端。HttpServlet 的doHead方法是一种特殊的doGet方法,只返回doGet方法生成的header。doOptions方法返回servlet支持的所有HTTP方法。doTrace方法生成的响应,包含TRACE请求中发送的所有header实例。

对于只支持HTTP/1.0的容器,只支持doGet,doHead和doPost方法,因为HTTP/1.0没有定义PUT,DELETE,OPTIONS和TRACE方法。

2.1.3 有条件的GET支持

HttpServlet接口定义了getLastModified方法以支持有条件的GET操作。一个有条件的GET操作所请求的资源,只有在指定时间内被修改才被发送。在适当的情况下,该方法的实现可能会有效地利用网络资源。

2.2 实例数

正如第13章“部署描述符”所述,作为含servlet的web应用部署描述符一部分的Servlet声明,控制着servlet容器如何提供servlet实例。

对于一个不驻留于分布式环境(默认)的servlet而言,servlet容器必须保证每个servlet声明只使用一个实例。不过,对于实现SingleThreadModel接口的servlet而言,servlet容器可以实例化多个实例以处理繁重的请求加载,但是一个特定实例只能一次处理请求。

如果作为应用一部分的servlet被部署为分布式,部署描述符中标明,那么容器只能让每个虚拟机(VM)每个servlet声明持有一个实例。不过,如果分布式应用中的servlet实现了SingleThreadModel接口,那么容器可以让容器中每个VM实例化多个servlet实例。

2.2.1 单线程模型注意点

使用SingleThreadModel接口保证一次只能有一个线程执行指定的servlet实例的service方法。要注意这项保证只适用于每个servlet实例,因为容器可以选择池化这些对象。这些对象一次可以被多个servlet实例访问,比如HttpSession实例,在任意时刻对于多个servlet都是可用的,即使它实现了SingleThreadModel。

2.3 servlet生命周期

servlet通过定义生命周期来进行管理,包括如何加载,实例化与初始化,处理客户端的请求,以及如何撤销服务。生命周期在API中表示为javax.servlet.Servlet接口的init,service和destroy方法,所有servlet必须直接实现或者通过GenericServlet或HttpServlet抽象类间接实现。

2.3.1 加载和实例化

servlet容器负责加载和实例化servlet。加载和实例化可以在容器启动时进行,也可以延迟到容器认为需要servlet来处理请求时。

当容器引擎启动时,servlet容器必须能定位所需要的servlet类。Servlet容器使用通常的Java类加载工具加载servlet类。可以从本地文件系统,远程文件系统或者其他网络服务中加载。

加载Servlet类后,容器将它实例化。

2.3.2 初始化

在servlet对象实例化之后,容器必须在它能处理客户端请求之前将其初始化。初始化是为了servlet能够读取持久性的配置数据,初始化代价高的资源(比如基于JDBC连接),以及执行其他一次动作。容器通过调用Servlet接口的init方法,并使用实现ServletConfig接口的单个(每个servlet声明)对象来初始化servlet实例。配置对象允许servlet访问来自web应用配置信息的名-值初始化参数,还允许servlet访问一个实现ServletContext接口的对象,它描述servlet运行时环境。关于ServletContext接口的更多信息参见第3章“Servlet上下文”。

2.3.2.1 初始化的错误情形

在初始化过程中,se

相关资讯

  • 2018小程序电商行业报告:用户规模将破5亿,社交玩法促进成单量

    OMO时代已来,小程序将会是最重要的工具。差不多两周前,新榜推送了这篇文章《“一条”“日日煮”抢先入局,内容创业迎来OMO时代?| 新榜观察》,在趋势层面探讨了一个现象,去线下开店似乎正成为潮水的方向。比如,刚拿到C+轮融资的“一条”,宣布未来两年要开100家线下…

    2025/12/29 23:07:38
  • 超2000个小程序被封,押注在这里的7亿多资金风险有多高?

    小程序发布一年后,微信开始了大清理。近日,微信宣布永久封禁976个假货、高仿,数百个“色情、低俗”类,及1000多个现金贷小程序。在此之前,就有头脑王者、荔枝微课、千聊被封,目前,后两者已经解封,但头脑王者还在关闭中。据娱乐资本论旗下剁椒娱投了解,千聊发布了…

    2025/12/29 23:07:38
  • 微信小程序认证有哪些主体类别?

    微信小程序在申请过程中,微信要求所有的小程序都要进行主体登记。那么,对于个体工商户来说,应该选择哪种主体类型进行登记?今天,就来为你详细解析一番。1.微信小程序有哪些主体类别?目前,可以登记注册微信小程序的主体类别,有以下几种:个人企业(包括个体工商户)…

    2025/12/29 23:07:38
  • APP五网合一让手机APP的客量倍增

    APP五网合一让手机APP的客量倍增?如今,不少商家都亟需开发自己的App。有想要扩充购买渠道的,有拥有忠实客户需要提供便捷入口的,还有一些门店商家,需要通过独App,树立品牌形象扩大影响力。  因为时代的驱动, 也给一大波的 外包企业开发公司带来很多的客源收益,深…

    2025/12/29 23:07:38

共有条评论 网友评论

验证码: 看不清楚?