`
bobbie.zou
  • 浏览: 65801 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HttpServlet抽象类的简述

    博客分类:
  • java
阅读更多
HttpServlet类的简述:public abstract class HttpServlet extends GenericServlet implements java.io.Serializable
java.lang.Object
  |
  +--javax.servlet.GenericServlet
        |
        +--javax.servlet.http.HttpServlet

父类/接口:java.io.Serializable, Servlet, ServletConfig

提供一个抽象类,扩展该类可以创建一个适合http servlet的网站。
一个扩展HttpServlet的子类,必须覆写至少一个方法,通常的方法是:
  doGet():假如servlet支持HTTP的GET请求的方法;
  doPost():用于HTTP的POST请求的方法;
  doPut():用于HTTP的PUT请求的方法;
  doDelete():用于HTTP的DELETE请求的方法;
  init()和destroy(),管理保持servlet生命周期信息的资源;
  getServletInfo(),提供servlet自身的信息。

不需要覆写service()方法。services()方法通过为每个HTTP请求类型(上述的doXXX())把这些请求分派到相应的处理方法来处理标准的HTTP请求。
同样,不需要覆写doOptions()方法和doTrace()方法。

Servlets是运行于多线程服务器的,所以一个servlet必须能够处理当前的请求,并可对共享资源提供同步访问。共享资源包括内存内数据,如:对象实例或类变量,或者诸如文件,数据连接、网络连接等外部对象。

doGet()方法概述:protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
由服务器调用(通过service()方法)来允许一个servlet处理一个GET请求。
覆写该方法来支持一个GET请求也自动地支持一个HTTP HEAD请求。一个HEAD请求是一个GET请求,在响应中只返回请求头区域,没有返回BODY区域。
当覆写这个方法的时候,读取请求数据,写入响应头,获得响应的writer或输出流对象,最后,写入响应数据。最好包含content type和编码(encoding)。当使用一个PrintWriter对象去返回响应,需要在访问PrinterWriter对象之前设置 content type。
servlet容器必须在提交响应前写入头信息,因为在HTTP协议下,必须在传送BODY之前传送头信息。
在可能的情况下,设置头信息的Content-Length(使用ServletResponse.setContentLength(int)方法)以允许servlet容器使用一个持久性连接向客户端返回响应,从而改善性能。如果整个响应适合放入响应缓冲区,那么Content-Length会被自动设定。
GET方法是比较安全的,如果客户端的请求需要改变存储的数据,应该使用其它HTTP方法。
The GET method should also be idempotent, meaning that it can be safely repeated. Sometimes making a method safe also makes it idempotent. For example, repeating queries is both safe and idempotent, but buying a product online or modifying data is neither safe nor idempotent. (暂时不能翻译)
如果请求的格式错误,doGet会返回一个HTTP的“Bad Request”信息。


getLastModified()方法概述:protected long getLastModified(HttpServletRequest req)
返回HttpServletRequest最近一次被修改的时间,该时间是距离1970年1月1日格林威治时间的毫秒数。如果时间未知,则返回一个否定的默认号(-1)。
支持HTTP GET请求并能迅速决定修改时间的servlet应该覆写该方法。这会使浏览器和代理缓冲区更具效率,因为这样可以减少重复的流量。

doHead()方法概述:protected void doHead(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
从一个protected service()方法返回一个HTTP HEAD请求,并处理该请求。当客户端只需要知道响应头,比如Content-Type或者Content-Length,客户端只需要发送一个HEAD 请求。HTTP HEAD准确地计算输出的字节数来设定Content-Length。
如果你覆写该方法,可以避免计算响应的BODY,而只需设置响应头以改善性能。Make sure that the doHead method you write is both safe and idempotent (that is, protects itself from being called multiple times for one HTTP HEAD request).

doPost()方法概述:protected void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
由服务器调用(通过service()方法)以允许一个servlet去处理一个POST请求。HTTP POST方法允许客户在同一时间内向服务器发送无长度限制的数据,而且好像信用卡号等都是允许的。
当覆写该方法时,读取请求数据,写入响应头,获得响应的writer或输出流对象,最后,写入响应数据。最好包含content type和编码(encoding)。当使用一个PrintWriter对象去返回响应,需要在访问PrinterWriter对象之前设置 content type。
当使用HTTP 1.1进行编码时(这意味着响应带有一个Transfer-Encoding 头),不要设置Content-Length 头。

doPut()方法概述:protected void doPut(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
由服务器调用(通过service()方法)以允许一个servlet去处理一个PUT请求。PUT操作允许客户好像使用FTP一样把文件放置到服务器。

doDelete()方法概述:protected void doDelete(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
由服务器调用(通过service()方法)以允许一个servlet去处理一DELETE请求。DELETE操作允许客户从服务器中删除一个文档或网页。

doOptions()方法概述:protected void doOptions(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
由服务器调用(通过service()方法)以允许一个servlet去处理一OPTIONS请求。OPTIONS操作决定服务器支持哪种HTTP方法,并返回一个适当的头信息。举例:如果一个servlet覆写了doGet()方法,doOptions()方法将会返回如下头信息:Allow: GET, HEAD, TRACE, OPTIONS

doTrace()方法概述:protected void doTrace(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
由服务器调用(通过service()方法)以允许一个servlet去处理一TRACE请求。该方法用于程序调试,无需被覆写。


protected service()方法概述:protected void service(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
从public service()方法接收标准的HTTP请求,并把它们分派给doXXX成员方法。该方法无需被覆写。

public service()方法概述:分派客户的请求到protected service()方法,该方法无需被覆写。
其它见Servlet.service()方法。
分享到:
评论

相关推荐

    简述抽象类和接口的区别-java接口和抽象类异同.docx

    - 例如,在Servlet开发中,`GenericServlet` 类就是一个典型的抽象类,它提供了一些通用的功能,而具体的子类如 `HttpServlet` 则负责实现特定的请求处理逻辑。 **接口的应用场景**: - 当你需要定义一组行为规范,...

    (HttpServlet封装类)Action.java

    通过JAVA反射技术对HttpServlet进行简单封装,类似于struts框架,页面请求过来的参数名只需要与Action<T> T这个Bean里的变量对应即可,getForm()就是获得页面传过来的参数[注:当前这个只能传T里的string和int/...

    Java抽象类与接口的区分_.docx

    例如,`GenericServlet`是一个抽象类,定义了`service`方法,子类如`HttpServlet`需要提供具体的实现。 接口则是一个完全抽象的概念,它只包含抽象方法和常量。接口是一种契约,定义了一组必须由实现该接口的类来...

    HttpServlet 的Servlet的详解

    本文档主要介绍了Java Servlet API 2.1版本的相关内容,特别关注于`HttpServlet`类及其在实际应用中的作用。`HttpServlet`是Java Servlet API中一个重要的类,它为HTTP协议提供了默认的方法实现,简化了HTTP请求的...

    httpservlet的jar包,修复httpservlet报错

    `javax.servlet.http.HttpServlet`是Servlet API中的一个抽象类,它是所有HTTP Servlet的基类,提供了处理HTTP请求的基本方法。当你遇到“httpservlet报错”时,通常意味着你的项目缺少Servlet相关的依赖或版本不...

    HttpServlet

    HttpServlet 代码

    httpservlet.jar包下载

    `javax.servlet`包是Servlet API的核心,它定义了如`Servlet`, `ServletConfig`, `ServletRequest`, `ServletResponse`等关键接口和类。其中,`Servlet`接口是所有Servlet的基类,定义了服务HTTP请求的方法,如`...

    httpservlet

    httpservlet时序图的图解,详细描述了servlet的执行流程

    HTTPservlet

    基础入门的客户端开发txt,很适合初学者的android开发,HttpServlet

    Java抽象类与接口区别详解

    当HttpServlet类继承GenericServlet时,它需要实现service()方法。 二、Java接口 Java接口是抽象方法的集合,如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,...

    查看httpServlet源码的包必须导入这个包才能看源代码

    `HttpServlet`类的核心在于它的抽象方法,例如`doGet()`、`doPost()`等,这些方法对应HTTP请求的不同类型。当一个HTTP请求到达服务器时,Tomcat会根据请求的HTTP方法(GET、POST等)调用相应的`doXXX()`方法。开发者...

    Tomcat下HttpServlet的Web应用工程

    重点在于理解和运用HttpServlet,一个Java Servlet API中的核心类,用于处理HTTP请求和响应。 【描述】提到的“后台显示log4j日志”是项目中的一大特点。Log4j是一个广泛使用的Java日志框架,它允许开发者记录应用...

    用HttpServlet实现登录注册功能

    所采用的环境是:IDEA_2019.2.3、MySQL_8.0.17和Tomcat_9.0.26,其中涉及到的内容有Druid数据库连池接技术,BeanUtils工具类等相关的JavaWeb技术,旨在加深对HttpServlet接口的理解和熟练对HttpSevlet接口的使用。

    HTTPServlet-tomcat源码

    提供tomcat的httpServlet解决http协议一些问题,有兴趣的可以了解一下

    如何重写继承HttpServlet的类

    以下是一个详细的过程,说明如何在实际项目中重写继承自`HttpServlet`的类。 1. **项目结构设置**: 首先,你需要在你的项目源代码目录(通常是 `src/main`)中创建一个新的Directory,并标记为 `Source Root`。...

    HttpServlet实现的资料,帮助初学者使用HttpServlet

    `Servlet`接口是所有Servlet实现的基础,开发者通常需要继承`HttpServlet`类,覆盖`doGet()`和`doPost()`等方法以处理HTTP请求。 6. **Servlet的部署与配置** - Servlet通常部署在Web应用的`WEB-INF/classes`或`...

    tomcat+httpservlet+session+cookie+jsp+filter

    tomcat+httpservlet+session+cookie+jsp+filter

    Java Web程序设计入门课件-HttpServlet.pptx

    GenericServlet是一个抽象类,实现了Servlet和ServletConfig接口,为编写Servlet提供了一种通用的方法。但是,由于GenericServlet对HTTP协议没有特定的处理,所以在实际开发中,我们通常不会直接继承它,而是选择...

    基于JSP HttpServlet的详细介绍

    由于HttpServlet本身是一个抽象类,它不能直接实例化,必须通过继承HttpServlet类并实现doGet()或doPost()等方法来创建一个具体的Servlet类。 在HttpServlet中,doGet()和doPost()是最常被覆盖的方法,分别用于处理...

Global site tag (gtag.js) - Google Analytics