Servlet API

您需要使用 Servlet API 来创建 servlet。使用 API ​​时必须记住两个包,包含支持通用 servlet(独立于协议的 servlet)的类的javax.servlet包和包含支持httpServlet的类的javax.servlet.http包。你可能想知道什么是泛型和 http Servlet,我在本文后面已经解释过了。

让我们看看包的层次结构:

java.lang.Object
    |_extended byjavax.servlet.GenericServlet
            |_extended byjavax.servlet.http.HttpServlet

每个 Servlet 必须实现java.servlet.Servlet接口,您可以通过扩展以下两个类之一来实现:javax.servlet.GenericServletjavax.servlet.http.HttpServlet。第一个用于协议无关的 Servlet,第二个用于httpServlet

servlet 如何工作?

Servlet API

通用 Servlet

如上所述,如果要创建GenericServlet,则必须扩展javax.servlet.GenericServlet类。GenericServlet类有一个抽象的service()方法。这意味着GenericServlet的子类应始终覆盖service()方法。

service()方法的签名:

public abstract void service(ServletRequest request, ServletResponse response)
         throws ServletException, java.io.IOException

service()方法接受两个参数ServletRequest对象和ServletResponse对象。请求对象告诉 servlet 客户端发出的请求,而响应对象用于将响应返回给客户端。

Servlet API

HTTPServlet

如果您创建HttpServlet,则必须扩展javax.servlet.http.HttpServlet类,这是一个抽象类。与GenericServlet不同,HTTPServlet不会覆盖service()方法。相反,它会覆盖以下一种或多种方法。它必须覆盖以下列表中的至少一个方法:

  • doGet() – 这个方法由 servlet 服务方法调用,用于处理来自客户端的 HTTP GET请求。Get方法用于从服务器获取信息
  • doPost() – 用于向服务器发布信息
  • doPut() – 这个方法类似于doPost方法,但与我们向服务器发送信息的doPost方法不同,此方法将文件发送到服务器,这类似于从客户端到服务器的 FTP 操作
  • doDelete() – 允许客户端从服务器删除文档,网页或信息
  • init()和 destroy() – 用于管理 servlet 生命周期内持有的资源
  • getServletInfo() – 返回有关 servlet 的信息,例如作者,版本和版权。

HttpServlet中,不需要覆盖service()方法,因为此方法将 Http 请求分派给正确的方法处理程序,例如,如果它接收到 HTTP GET请求,它会将请求分派给doGet()方法。

Servlet API

javax.servlet包中的接口

  • Servlet
  • ServletRequest
  • ServletResponse
  • ServletConfig
  • ServletContext
  • SingleThreadModel
  • RequestDispatcher
  • ServletRequestListener
  • ServletRequestAttributeListener
  • ServletContextListener
  • ServletContextAttributeListener
  • Filter
  • FilterConfig
  • FilterChain

javax.servlet包中的类

  • GenericServlet
  • ServletInputStream
  • ServletOutputStream
  • ServletException
  • ServletRequestWrapper
  • ServletRequestEvent
  • ServletResponseWrapper
  • ServletContextEvent
  • ServletRequestAttributeEvent
  • ServletContextAttributeEvent
  • UnavailableException

javax.servlet.http包中的接口

  • HttpSession
  • HttpServletRequest
  • HttpServletResponse
  • HttpSessionAttributeListener
  • HttpSessionListener
  • HttpSessionBindingListener
  • HttpSessionActivationListener
  • HttpSessionContext

javax.servlet.http包中的类

  • HttpServlet
  • Cookie
  • HttpSessionEvent
  • HttpSessionBindingEvent
  • HttpServletRequestWrapper
  • HttpServletResponseWrapper
  • HttpUtils

参考:

  1. 官方 Servlet API 文档:javax.servlet
  2. API 文档:java.servlet.http
赞(1)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址