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

Servlet接口

2019/3/6 10:48:36 人评论

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

相关资讯

  • document.cookie:客户端操作cookie

    我们已经知道,在 document 对象中有一个 cookie 属性。但是 Cookie 又是什么?“某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie。”—— MSIE 帮助。一般来说,Cookies 是 CGI 或类似,比 HTML …

    2019/4/12 8:18:11
  • 用ASP实现分级权限控制

    本文实现的是一个帐务管理系统中分级权限的控制,程序使用ASP和JavaScript编写,在装有IIS4.0的win NT服务器上运行,速度快,易维护。  权限级别划分如下:  ①、院长和财务科长:不能输入,可以无限制查询、统计;  ②、副院长:不能输入,可以查询、统计其分管部…

    2019/4/12 8:18:11
  • ASP实现Rewrite模拟生成静态页效

    以前刚刚懂404.asp的时候,曾经幻想把所有程序代码写到404.asp中,实现一个模拟生成静态网页的站,如果程序小还可以,用404.asp实现Rewrite还是一个不错的选择,如果程序代码多达100000行,恐怕就要开始爬了  直到看到asp的Server.Transfer,用404模拟生成静态页的站的念…

    2019/4/12 8:18:11
  • ASP随机涵数生成100条8位字母和数字混合密码

    <%for i = 1 to 100%><%Randomizepass=""Do While Len(pass)<8 随机密码位数num1=CStr(Chr((57-48)*rnd+48)) 0~9num2=CStr(Chr((122-97)*rnd+97)) a~zpass=pass&num1&num2loop原创:www.devdao.com%><%=pass%><br><%next…

    2019/4/12 8:18:11

共有条评论 网友评论

验证码: 看不清楚?