导航

HttpServlet API

Posted on 2017-07-05 12:05  Young哥哥  阅读(70)  评论(0)    收藏  举报
 


javax.servlet.http 
类HttpServlet

java.lang.Object
   

延伸到

javax.servlet.GenericServlet 
      

延伸到

javax.servlet.http.HttpServlet
所有实现的接口:
java.io.Serializable,Servlet,ServletConfig

公共抽象类HttpServlet
扩展GenericServlet
实现java.io.Serializable

提供一个要子类化的抽象类,以创建适用于Web站点的HTTP servlet。一个子类 HttpServlet必须至少覆盖一个方法,通常是以下之一:

  • doGet如果servlet支持HTTP GET请求
  • doPost,用于HTTP POST请求
  • doPut,用于HTTP PUT请求
  • doDelete,用于HTTP DELETE请求
  • init并且destroy管理在servlet生命周期中保存的资源
  • getServletInfo,servlet用于提供有关本身的信息

几乎没有理由重写该service 方法。service通过将标准HTTP请求发送到每个HTTP请求类型的处理程序方法( 上面列出的doXXX方法)来处理标准的HTTP请求。

同样,几乎没有理由重写 doOptions和doTrace方法。

Servlet通常在多线程服务器上运行,因此请注意,servlet必须处理并发请求,并小心地将访问权限同步到共享资源。共享资源包括内存中的数据,如实例或类变量以及外部对象,如文件,数据库连接和网络连接。有关在 Java程序中处理多个线程的更多信息,请参阅有关多线程编程的 Java教程。

 

 

版:
$版本$
作者:
各个
也可以看看:
序列表

构造函数摘要
HttpServlet() 
          没有什么,因为这是一个抽象类。

 

方法摘要
protected  void doDelete(HttpServletRequest req, HttpServletResponse resp) 
          由服务器调用(通过service方法)允许servlet处理DELETE请求。
protected  void doGet(HttpServletRequest req, HttpServletResponse resp) 
          由服务器调用(通过service方法)允许servlet处理GET请求。
protected  void doHead(HttpServletRequest req, HttpServletResponse resp) 
          从受保护的service方法接收HTTP HEAD请求 并处理请求。
protected  void doOptions(HttpServletRequest req, HttpServletResponse resp) 
          由服务器调用(通过service方法)允许servlet处理OPTIONS请求。
protected  void doPost(HttpServletRequest req, HttpServletResponse resp) 
          由服务器调用(通过service方法)允许servlet处理POST请求。
protected  void doPut(HttpServletRequest req, HttpServletResponse resp) 
          由服务器调用(通过service方法)允许servlet处理PUT请求。
protected  void doTrace(HttpServletRequest req, HttpServletResponse resp) 
          由服务器调用(通过service方法)允许servlet处理TRACE请求。
protected  long getLastModified(HttpServletRequest req) 
          返回HttpServletRequest 上一次修改对象的时间,以1970年1月1日GMT格林尼治时间以来的毫秒为单位。
protected  void service(HttpServletRequest req, HttpServletResponse resp) 
          从公共service方法接收标准HTTP请求, 并将它们分派到此类中定义的doXXX方法。
 void service(ServletRequest req, ServletResponse res) 
          将客户端请求调度到受保护的 service方法。

 

从类javax.servlet继承的方法。GenericServlet类
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, init, log, log

 

从类java.lang.Object继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

 

构造函数详细信息

HttpServlet的

public HttpServlet()
没有什么,因为这是一个抽象类。

 

方法细节

的doGet

protected void doGet(HttpServletRequest  req,
                      HttpServletResponse  resp)
              抛出ServletException,
                     java.io.IOException异常
由服务器调用(通过service方法)允许servlet处理GET请求。

覆盖此方法以支持GET请求也自动支持HTTP HEAD请求。HEAD请求是GET请求,在响应中不返回任何正文,只有请求头字段。

当覆盖此方法时,读取请求数据,写入响应头,获取响应的写入器或输出流对象,最后写入响应数据。最好包含内容类型和编码。使用PrintWriter对象返回响应时,请在访问PrintWriter对象之前设置内容类型 。

在提交响应之前,servlet容器必须写入头,因为在HTTP中,头部必须在响应体之前发送。

在可能的情况下,设置Content-Length头(使用 ServletResponse.setContentLength(int)方法),以允许servlet容器使用持久连接将其响应返回给客户端,从而提高性能。如果整个响应适合于响应缓冲区内,内容长度将自动设置。

当使用HTTP 1.1分块编码(这意味着响应具有传输编码头)时,不要设置Content-Length头。

GET方法应该是安全的,也就是没有任何副作用,对用户负责。例如,大多数表单查询都没有副作用。如果客户端请求是为了更改存储的数据,请求应该使用其他一些HTTP方法。

GET方法也应该是幂等的,这意味着它可以安全地重复。有时使方法安全也使其幂等。例如,重复查询既安全又具有幂等级,但在线购买产品或修改数据既不安全也不是幂等。

如果请求格式不正确,则doGet 返回HTTP“错误请求”消息。

 

参数:
req- 一个HttpServletRequest包含客户端对servlet所做的请求的对象
resp- HttpServletResponse包含servlet发送给客户端的响应的对象
抛出:
java.io.IOException - 如果servlet处理GET请求时检测到输入或输出错误
ServletException - 如果GET请求无法处理
也可以看看:
ServletResponse.setContentType(java.lang.String)

getLastModified

protected long getLastModified(HttpServletRequest  req)
返回HttpServletRequest 上一次修改对象的时间,以1970年1月1日GMT格林尼治时间以来的毫秒为单位。如果时间未知,此方法返回一个负数(默认值)。

支持HTTP GET请求并可以快速确定其最后修改时间的Servlet应该覆盖此方法。这使得浏览器和代理缓存更有效地工作,减少了对服务器和网络资源的负担。

 

参数:
req- HttpServletRequest 发送到servlet 的对象
返回:
一个long整数,指定HttpServletRequest 对象上次修改的时间,以毫秒为单位,自1970年1月1日GMT以来的毫秒,如果时间未知,则为-1。

doHead

protected void doHead(HttpServletRequest  req,
                       HttpServletResponse  resp)
               抛出ServletException,
                      java.io.IOException异常

从受保护的service方法接收HTTP HEAD请求 并处理请求。当客户端想要仅查看响应的标头(如Content-Type或Content-Length)时,客户端发送HEAD请求。HTTP HEAD方法对响应中的输出字节进行计数,以准确地设置Content-Length头。

如果覆盖此方法,则可以避免计算响应体,并直接设置响应头以提高性能。确保doHead您编写的 方法既安全又具有幂等性(即,为一个HTTP HEAD请求保护自己不被多次调用)。

如果HTTP HEAD请求格式不正确,则 doHead返回HTTP“错误请求”消息。

 

参数:
req - 传递给servlet的请求对象
resp - servlet用于将标头返回到clien的响应对象
抛出:
java.io.IOException - 如果发生输入或输出错误
ServletException - 如果对HEAD的请求无法处理

doPost方法

protected void doPost(HttpServletRequest  req,
                       HttpServletResponse  resp)
               抛出ServletException,
                      java.io.IOException异常
由服务器调用(通过service方法)允许servlet处理POST请求。HTTP POST方法允许客户端发送无限长度的数据到Web服务器一次,并且在发布诸如信用卡号码之类的信息时是有用的。

当覆盖此方法时,读取请求数据,写入响应头,获取响应的写入器或输出流对象,最后写入响应数据。最好包含内容类型和编码。使用 PrintWriter对象返回响应时,请在访问PrintWriter对象之前设置内容类型。

在提交响应之前,servlet容器必须写入头,因为在HTTP中,头部必须在响应体之前发送。

在可能的情况下,设置Content-Length头(使用 ServletResponse.setContentLength(int)方法),以允许servlet容器使用持久连接将其响应返回给客户端,从而提高性能。如果整个响应适合于响应缓冲区内,内容长度将自动设置。

当使用HTTP 1.1分块编码(这意味着响应具有传输编码头)时,不要设置Content-Length头。

该方法不需要是安全的或幂等的。通过POST请求的操作可能会产生副作用,用户可以对此负责,例如更新存储的数据或在线购买项目。

如果HTTP POST请求格式不正确,则 doPost返回HTTP“错误请求”消息。

 

参数:
req- 一个HttpServletRequest包含客户端对servlet所做的请求的对象
resp- HttpServletResponse包含servlet发送给客户端的响应的对象
抛出:
java.io.IOException - 如果在servlet处理请求时检测到输入或输出错误
ServletException - 如果POST请求无法处理
也可以看看:
ServletOutputStream, ServletResponse.setContentType(java.lang.String)

doPut

protected void doPut(HttpServletRequest  req,
                      HttpServletResponse  resp)
              抛出ServletException,
                     java.io.IOException异常
由服务器调用(通过service方法)允许servlet处理PUT请求。PUT操作允许客户端将文件放在服务器上,类似于通过FTP发送文件。

当覆盖此方法时,请保留与请求一起发送的任何内容标题(包括Content-Length,Content-Type,Content-Transfer-Encoding,Content-Encoding,Content-Base,Content-Language,Content-Location,Content-MD5,和Content-Range)。如果您的方法无法处理内容头,则必须发出错误消息(HTTP 501 - 未实现)并放弃该请求。有关HTTP 1.1的更多信息,请参阅RFC 2616 。

该方法不需要是安全的或幂等的。doPut执行的操作可能会产生副作用,用户可以对此负责。使用此方法时,可能会将受影响的URL的副本保存在临时存储中。

如果HTTP PUT请求格式不正确,则 doPut返回HTTP“错误请求”消息。

 

参数:
req- HttpServletRequest包含客户端使用servlet的请求的对象
resp- HttpServletResponse包含servlet返回给客户端的响应的对象
抛出:
java.io.IOException - 如果在servlet处理PUT请求时发生输入或输出错误
ServletException - 如果PUT的请求无法处理

doDelete

protected void doDelete(HttpServletRequest  req,
                         HttpServletResponse  resp)
                 抛出ServletException,
                        java.io.IOException异常
由服务器调用(通过service方法)允许servlet处理DELETE请求。DELETE操作允许客户端从服务器中删除文档或Web页面。

该方法不需要是安全的或幂等的。通过DELETE请求的操作可能会产生副作用,用户可以对此负责。使用此方法时,可能会将受影响的URL的副本保存在临时存储中。

如果HTTP DELETE请求格式不正确,则 doDelete返回HTTP“错误请求”消息。

 

参数:
req- HttpServletRequest包含客户端使用servlet的请求的对象
resp- HttpServletResponse包含servlet返回给客户端的响应的对象
抛出:
java.io.IOException - 如果在servlet正在处理DELETE请求时发生输入或输出错误
ServletException - 如果DELETE的请求无法处理

doOptions

protected void doOptions(HttpServletRequest  req,
                          HttpServletResponse  resp)
                  抛出ServletException,
                         java.io.IOException异常
由服务器调用(通过service方法)允许servlet处理OPTIONS请求。OPTIONS请求确定服务器支持哪些HTTP方法并返回相应的头。例如,如果servlet覆盖doGet,则此方法返回以下标题:

Allow: GET, HEAD, TRACE, OPTIONS

除非servlet实现了新的HTTP方法,否则不需要重写此方法,除了HTTP 1.1实现之外。

 

参数:
req- HttpServletRequest包含客户端使用servlet的请求的对象
resp- HttpServletResponse包含servlet返回给客户端的响应的对象
抛出:
java.io.IOException - 如果在servlet处理OPTIONS请求时发生输入或输出错误
ServletException - 如果对OPTIONS的请求无法处理

doTrace

protected void doTrace(HttpServletRequest  req,
                        HttpServletResponse  resp)
                抛出ServletException,
                       java.io.IOException异常
由服务器调用(通过service方法)允许servlet处理TRACE请求。TRACE将带有TRACE请求的标头返回给客户机,以便它们可以在调试中使用。没有必要重写这个方法。

 

参数:
req- HttpServletRequest包含客户端使用servlet的请求的对象
resp- HttpServletResponse包含servlet返回给客户端的响应的对象
抛出:
java.io.IOException - 如果在servlet处理TRACE请求时发生输入或输出错误
ServletException - 如果TRACE的请求无法处理

服务

protected void service(HttpServletRequest  req,
                        HttpServletResponse  resp)
                抛出ServletException,
                       java.io.IOException异常
从公共service方法接收标准HTTP请求, 并将它们分派到此类中定义的doXXX方法。该方法是该方法的HTTP特定版本 Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)。没有必要重写这个方法。

 

参数:
req- HttpServletRequest包含客户端使用servlet的请求的对象
resp- HttpServletResponse包含servlet返回给客户端的响应的对象
抛出:
java.io.IOException - 如果servlet处理HTTP请求时发生输入或输出错误
ServletException - 如果HTTP请求无法处理
也可以看看:
Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)

服务

public void service(ServletRequest  req,
                     ServletResponse  res)
             抛出ServletException,
                    java.io.IOException异常
将客户端请求调度到受保护的 service方法。没有必要重写这个方法。

 

指定者:
service 在界面 Servlet
指定者:
service 在班上 GenericServlet
参数:
req- HttpServletRequest包含客户端使用servlet的请求的对象
res- HttpServletResponse包含servlet返回给客户端的响应的对象
抛出:
java.io.IOException - 如果servlet处理HTTP请求时发生输入或输出错误
ServletException - 如果HTTP请求无法处理
也可以看看:
Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)

 


版权所有©1999-2012 Apache Software Foundation。版权所有。