《Servlet和JSP学习指南》一1.9 HTTP Servlet

1.9 HTTP Servlet

我们所编写的Servlet应用程序,尽管不能说全部,但其中大多数要用到HTTP。这意味着,可以利用HTTP提供的特性。javax.servlet.http包是Servlet API中的第二个包,其包含了编写Servlet应用程序的类和接口。javax.servlet.http中的许多类型覆盖了javax.servlet中的类型。
图1-5展示了javax.servlet.http中的主要类型。

1.9.1 HttpServlet

HttpServlet类覆盖javax.servlet.GenericServlet类。在使用HttpServlet时,还要使用HttpServletRequest和HttpServletResponse对象,它们分别表示Servlet请求和Servlet响应。HttpServletRequest接口继承javax.servlet.ServletRequest,HttpServletResponse继承javax.servlet.ServletResponse。
HttpServlet覆盖GenericServlet中的service方法,并用以下签名添加了另一个service方法:

这个新的service方法与javax.servlet.Servlet中的区别在于,前者接受的是HttpServlet-Request和HttpServletResponse,而不是ServletRequest和ServletResponse。
与往常一样,Servlet容器调用javax.servlet.Servlet中原始的service方法,HttpServlet中的service方法要如下这么写:

原始的service方法将请求和响应对象进行向下转换,分别从Servlet容器转换成HttpServletRequest和HttpServletResponse,并调用新的service方法。向下转换总是会成功,因为在调用一个Servlet的service方法时,Servlet容器总会预计使用HTTP,所以传递一个HttpServletRequest和一个HttpServletResponse。即使正在实现javax.servlet.Servlet接口或者继承javax.servlet.GenericServlet,也可以将传给service方法的Servlet请求和Servlet响应,分别向下转换成HttpServletRequest和HttpServletResponse。
之后,HttpServlet中新的service方法会查看通常用来发送请求(通过调用request.getMethod)的HTTP方法,并调用以下某个方法(doGet、doPost、doHead、doPut、doTrace、doOptions和doDelete)。这7个方法各自表示一个HTTP方法。其中,doGet和doPost是最常用的。因此,通常不需要再覆盖service方法,而是覆盖doGet或者doPost,或者将doGet和doPost都覆盖掉。
总之,HttpServlet中有两项特性是GenericServlet所没有的:
不覆盖service方法,而是覆盖doGet、doPost,或者两者都覆盖掉。在极少数情况下,还要覆盖以下某个方法:doHead、doPut、doTrace、doOptions或doDelete。
将用HttpServletRequest和HttpServletResponse代替ServletRequest和Servlet-Response。

1.9.2 HttpServletRequest

HttpServletRequest表示HTTP环境中的Servlet请求。它继承javax.servlet.ServletRequest接口,并增加了几个方法,例如:

返回表示请求context的请求URI部分。

返回一个Cookie对象数组。

返回指定HTTP标头的值。

返回发出这条请求的HTTP方法的名称。

返回请求URL中的查询字符串。

返回与这个请求有关的session对象。如果没有找到,则创建新的session对象。

返回与这个请求有关的session对象。如果没有找到,并且create参数为true,那么将创建新的session对象。
在接下来的章节中,将学习如何使用这些方法。

1.9.3 HttpServletResponse

HttpServletResponse表示HTTP环境下的Servlet响应。下面是其中定义的部分方法:

给这个响应对象添加cookie。

给这个响应对象添加标头。

发送响应代号,将浏览器重定向到指定的位置。
在接下来的章节中将进一步学习这些方法。

时间: 2024-08-24 08:55:40

《Servlet和JSP学习指南》一1.9 HTTP Servlet的相关文章

《Servlet和JSP学习指南》一1.3 编写基础的Servlet应用程序

1.3 编写基础的Servlet应用程序 Servlet应用程序编写起来非常简单,只需要创建一个目录结构,并将Servlet类放在某一个目录下即可.在本节中,将学习如何编写一个简单的Servlet应用程序,将它命名为app01a.最初它只包含一个Servlet:MyServlet,其会给用户发送一条问候信息. 需要用一个Servlet容器来运行Servlet.Tomcat是一个开源的Servlet容器,可以免费获得,它也可以在能够使用Java的任何操作系统平台上运行.如果你还没有安装Tomcat

《Servlet和JSP学习指南》一导读

前 言 欢迎你阅读本书,其内容涵盖了Servlet 3.0和JSP 2.2方面的技术. Java Servlet技术,或简称Servlet,是Java中用于开发Web应用程序的基本技术.Sun公司于1996年发布了Java Servlet技术,与CGI(Common Gateway Interface,公共网关接口)形成竞争.之后,它成为在Web中生成动态内容的标准.CGI的主要问题在于,它为每一个HTTP请求都创建一个新的进程.因为创建进程需要花费大量的CPU周期,这使得编写可扩展的CGI程序

《Servlet和JSP学习指南》一3.1 JSP概述

3.1 JSP概述 JSP页面其实是一个Servlet.但是,使用JSP页面则比Servlet要容易得多,这有两个原因:第一,不需要编译JSP页面:第二,JSP页面一般是扩展名为jsp的文本文件,可以利用任何文本编辑器来编写. JSP页面是在JSP容器中运行的.Servlet容器一般也是JSP容器.例如,Tomcat就是一个Servlet/JSP容器. 第一次请求一个JSP页面时,Servlet/JSP容器要做两件事情: 1. 将JSP页面转换成一个JSP页面实现类,这是一个实现javax.se

《Servlet和JSP学习指南》一第3章 JSP 3.0

第3章 JSP 在第1章中我们已经知道,Servlet有两个缺陷无法克服.第一,在Servlet中编写的所有HTML标签都必须包在Java字符串中,这使得发送HTTP响应变成一项十分烦琐的工作.第二,所有文本和HTML标签都必须进行硬编码:因此,即使只对表示层做极其微小的修改,例如,修改背景颜色,也需要重新编译.JavaServer Pages(JSP)解决了Servlet中的这两个问题.但是,JSP并没有取代Servlet,而是对它进行了补充.现代的Java Web应用程序都使用Servlet

《Servlet和JSP学习指南》一第1章 Servlet 1.1 Servlet API概述

第1章 Servlet Servlet是开发Servlets应用程序的主要技术.掌握Servlet API是成为一名技术高超的Java Web开发者的基础.你必须非常熟悉Servlet API中所定义的70多种类型.这个数字听起来似乎不少,但是如果你每次学一种,就不会觉得困难了. 本章将介绍Servlet API,并教你编写第一个Servlet应用程序. 1.1 Servlet API概述 Servlet API中有4个Java包,包括: javax.servlet.包含定义Servlet与Se

《Servlet和JSP学习指南》一1.12 小结

1.12 小结 Servlet技术是Java EE技术的组成部分.Servlet容器中运行的所有Servlet,以及容器与Servlet之间的契约,都采用了javax.servlet.Servlet接口的形式.javax.servlet包也提供了实现Servlet接口的GenericServlet抽象类.这是一个便利类,可以通过扩展它来创建Servlet.但是,大多数现代的Servlet都在HTTP环境中处理请求.因此,将javax.servlet.http.HttpServlet类子类化会更有

《Servlet和JSP学习指南》一1.11 使用部署描述符

1.11 使用部署描述符 在前面的范例中已经学过,编写和部署Servlet应用程序是很容易的.部署的一个方面是给Servlet映射配置一条路径.在那些例子中,利用WebServlet注解类型给一个Servlet映射了一条路径.使用部署描述符是配置Servlet应用程序的另一种方法,关于部署描述符的详细讨论,可查看第16章的内容.部署描述符总是命名为web.xml,并放在WEB-INF目录下.本章将介绍如何创建一个名为app01c的Servlet应用程序,并为它编写一个web.xml文件.app0

《Servlet和JSP学习指南》一3.5 脚本元素

3.5 脚本元素 第二种JSP句法元素是脚本元素,它将Java代码合并成一个JSP页面.脚本元素有3种类型:Scriptlet.声明及表达式,这些都将在接下来的小节中讨论. 3.5.1 Scriptlet Scriptlet是一个Java代码块,它以<%开头,以%>结束.例如,代码清单3-6中的scriptletTest.jsp页面就是使用了Scriptlet. 上述JSP页面中有两个Scriptlet.注意,在一个Scriptlet中定义的变量,对于它后面的其他Scriptlet是可见的.

《Servlet和JSP学习指南》一3.6 动作

3.6 动作 第三种句法元素是动作(Action),它们被编译成执行某个操作的Java代码,例如访问某个Java对象,或者调用某个方法.本节讨论必须能被所有JSP容器支持的标准动作.除标准动作之外,还可以创建定制的标签,用来执行某些操作.定制标签将在第6章中讨论. 下面列举部分标准动作.doBody和invoke这两个标准动作将在第7章中讨论. 3.6.1 useBean 这个动作将创建一个与某个Java对象相关的脚本变量.它是将表现逻辑与业务逻辑分隔开来的最容易的方法之一.但是有了像定制标签和