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

简介: 本节书摘来自华章出版社《Servlet和JSP学习指南》一书中的第1章,第1.9节,作者(加)Budi Kurniawan,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.9 HTTP Servlet

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

image

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方法:
image

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

原始的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接口,并增加了几个方法,例如:
image

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

返回一个Cookie对象数组。
image

返回指定HTTP标头的值。
image

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

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

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

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

1.9.3 HttpServletResponse

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

给这个响应对象添加cookie。
image

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

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

相关文章
|
23天前
|
Java
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
19 1
|
23天前
|
Java
人事管理系统【JSP+Servlet+JavaBean】(Java课设)
人事管理系统【JSP+Servlet+JavaBean】(Java课设)
18 0
|
1月前
使用Servlet上传多张图片——前台页面层(Index.jsp)
使用Servlet上传多张图片——前台页面层(Index.jsp)
14 0
|
4天前
|
安全 Java 网络安全
Servlet 教程 之 Servlet 客户端 HTTP 请求 2
Servlet教程介绍了如何在Servlet中处理HTTP请求,包括获取Cookie、头信息、参数、Session等。方法如:`getCookies()`、`getAttributeNames()`、`getHeaderNames()`、`getParameterNames()`等。还能获取身份验证类型、字符编码、MIME类型、请求方法、远程用户信息、URL路径、安全通道状态以及请求内容长度等。此外,可通过`getSession()`创建或获取Session,并以`Map`形式获取参数。
20 8
|
3天前
|
XML Java 数据格式
Servlet 教程 之 Servlet 服务器 HTTP 响应 3
`Servlet`教程示例展示了如何创建一个HTTP响应,使用`@WebServlet("/Refresh")`的`Refresh`类继承`HttpServlet`。在`doGet`方法中,设置了`Refresh`头以每5秒自动刷新,并用`setContentType("text/html;charset=UTF-8")`设定内容类型。还使用`Calendar`和`SimpleDateFormat`获取并格式化当前时间显示。相应的`web.xml`配置指定了Servlet路径。当访问此Servlet时,页面将每5秒更新一次显示的系统时间。
14 4
|
2天前
|
Java
Servlet 教程 之 Servlet HTTP 状态码 3
该Servlet教程聚焦于HTTP状态码,示例展示如何向客户端发送407错误,提示"Need authentication!!!". 类名为`showError`的Servlet扩展自`HttpServlet`,重写`doGet`和`doPost`方法。当遇到GET或POST请求时,它会设置HTTP状态码为407并附带错误信息。
10 2
|
23天前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
7 0
|
23天前
|
Java
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
13 0
|
23天前
|
Java
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
16 0
|
1月前
|
Java 应用服务中间件
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
129 1