您需要使用 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.GenericServlet
或javax.servlet.http.HttpServlet
。第一个用于协议无关的 Servlet,第二个用于httpServlet
。
servlet 如何工作?
通用 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 客户端发出的请求,而响应对象用于将响应返回给客户端。
HTTPServlet
如果您创建HttpServlet
,则必须扩展javax.servlet.http.HttpServlet
类,这是一个抽象类。与GenericServlet
不同,HTTPServlet
不会覆盖service()
方法。相反,它会覆盖以下一种或多种方法。它必须覆盖以下列表中的至少一个方法:
doGet()
– 这个方法由 servlet 服务方法调用,用于处理来自客户端的 HTTPGET
请求。Get
方法用于从服务器获取信息doPost()
– 用于向服务器发布信息doPut()
– 这个方法类似于doPost
方法,但与我们向服务器发送信息的doPost
方法不同,此方法将文件发送到服务器,这类似于从客户端到服务器的 FTP 操作doDelete()
– 允许客户端从服务器删除文档,网页或信息init()和 destroy()
– 用于管理 servlet 生命周期内持有的资源getServletInfo()
– 返回有关 servlet 的信息,例如作者,版本和版权。
在HttpServlet
中,不需要覆盖service()
方法,因为此方法将 Http 请求分派给正确的方法处理程序,例如,如果它接收到 HTTP GET
请求,它会将请求分派给doGet()
方法。
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
参考: