【JAVAEE】HTTPServlet

继承体系

【JAVAEE】HTTPServlet

定义

  • 是GenericServlet的子类
  • 是Servlet接口的一个实现类
  • 是一个抽象类
  • 支持HTTP
  • servlet.http包中定义了采用HTTP通信协议(一个无状态协议)的HttpServlet类。

作用

  • 用于接收Http请求和响应
  • HttpServlet类读取HTTP请求,并确定请求是否为HTTP GET,POST,PUT,DELETE,HEAD等,并调用一个相应的方法。
  • 继承HttpService实现自定义的Service

特点

HttpServlet比GenericServlet更容易使用,并且有更多的便捷方法。
一旦涉及到和http有关的函数,我们需要将request强制转换为httprequest,它具有servlet和genericServlet都不具有的函数。
HttpServlet增加的函数,使得代码书写更为简单

方法

如果继承了HttpServlet没有实现任何的doXxx方法则会抛出一个异常:405

service()

两个方法

  1. Public service()继承自父类
  2. Protected service()是自己的方法
  • 父类service 调用子类service 使用子类service方法就可以
  • 子类中service 根据请求方式不同 调用不同的方法

作用

将ServletRequest和ServletResponse强转成HttpServletRequest、HttpServletResponse再调用service()
Public service()只接受HTTP请求,将request、response强转类型,将请求转到Protected service(),Protected service()根据请求类型转到相应的doxxx()中
【JAVAEE】HTTPServlet

doGet()

调用服务器的资源(由请求URL标识的资源),并将其作为响应返回给客户端
调用会在浏览器的URL里显示用户名和密码.

doPost()

把客户端的数据传给服务端
可以以隐藏方式给服务器端发送数据.
Post适合发送大量数据.(无限制长度的数据)

doDelete()

允许客户端删除服务器端的文件或者Web页面等由URL标识的资源
使用非常少.

doOptions()

返回服务器支持的HTTP方法

doPut()

允许客户端把存储一个资源到请求的路径上,而不仅仅是传送数据.

doTrace()

返回track请求附带的头字段
远程诊断服务器

doHead()

客户端只需要响应的HEADER,它就发出一个Header请求.
这种情况下客户端关心响应的长度和响应的MIME类型.

HttpServlet容器响应Web客户请求流程

  1. Web客户向Servlet容器发出Http请求
  2. Servlet容器解析Web客户的Http请求
  3. Servlet容器创建一个HttpRequest对象(继承于ServletRequest),在这个对象中封装Http请求信息
  4. Servlet容器创建一个HttpResponse对象
  5. Servlet容器调用HttpServlet的service方法,把HttpRequest和HttpResponse对象作为service方法的参数传给HttpServlet对象
  6. HttpServlet调用HttpRequest的有关方法,获取HTTP请求信息
  7. HttpServlet调用HttpResponse的有关方法,生成响应数据
  8. Servlet容器把HttpServlet的响应结果传给Web客户
    其中HttpServlet首先必须读取Http请求的内容,Servlet容器负责创建HttpServlet对象,并把Http请求直接封装到HttpServlet对象中。

创建HttpServlet步骤

1.继承HttpServlet抽象类
2.重写HttpServlet的部分方法,如doGet()或doPost()方法
3.获取HTTP请求信息。通过HttpServletRequest对象来检索HTML表单所提交的数据或URL上的查询字符串
4.生成HTTP响应结果。通过HttpServletResponse对象生成响应结果