二 Servlet API
你需要适合用Servlet API 创建servlet. 在使用API时,有两个包必须记住, javax.servlet 包,该包包含了支持通用servlet(独立于协议的servlet)的类,javax.servlet.http包,该包包含了支持http servlet的类。 你也许想知道什么是通用servlet,http servlet, 我随后会解释他们。
包的继承关系
java.lang.Object
|_extended by javax.servlet.GenericServlet
|_extended by javax.servlet.http.HttpServlet
每个servlet必须实现java.servlet.Servlet接口。可以扩展下面两个类的任何一个:javax.servlet.GenericServlet,javax.servlet.http.HttpServlet. 第一个是独立于协议的Servlet,第二个是为http 的Servlet.
servet 如何工作的?
(image)[https://beginnersbook.com/wp-content/uploads/2013/05/How_Servlet_Works.jpg]
Generic Servlet
如果要创建一个通用的servet, 就必须扩展javax.servlet.GenericServlet 类,该类有个抽象方法service(),也就是说,GenericServlet子类应该总是覆盖service()方法。
service()方法签名
public abstract void service(ServletRequest request, ServletResponse response)
throws ServletException, java.io.IOException
service()方法接受两个参数:ServletRequest对象和ServletResponse对象。这个请求对象告诉servlet关于这个客户端请求,这个响应对象用于返回客户端响应
(image)[https://beginnersbook.com/wp-content/uploads/2013/05/Generic_Servlet.jpg]
HTTP Servlet
如果创建一个Http Servlet,就必须扩展javax.servlet.http.HttpServlet类,这是一个抽象类。不像普通的servlet,Http Servlet不会覆盖service()方法,而是覆盖至少一个下面的方法:
doGet(): 这个方法被servlet 的service()方法调用去处理客户端的http get请求。此方法用户获取来自服务器的信息。
doPost(): 用于向服务器发送信息。
doPut(): 这个方法与doPost()类似,但是不像doPost()发送信息给服务器,而是发送文件到服务器,类似于FTP操作。(我不同意这个说法)
doDelete(): 允许客户端删除文档,网页或者来自服务器的信息。
init()和destory(): 用于管理servlet生命周期内占用的资源。
getServletInfo(): 返回关于该servlet的信息,例如作者,版本,版权。
在Http Servlet 没有必要覆盖service()方法,因为这个方法分发Http Request 到正确的处理方法上,例如, 接受到Http Get 请求,它会分发请求到doGet()方法上。
(image)[https://beginnersbook.com/wp-content/uploads/2013/05/Http_Servlet.jpg]
在javax.servlet 包中的接口
Servlet
ServletRequest
ServletResponse
ServletConfig
ServletContext
SingleThreadModel
RequestDispatcher
ServletRequestListener
ServletRequestAttributeListener
ServletContextListener
ServletContextAttributeListener
Filter
FilterConfig
FilterChain
Classes in javax.servlet package
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
参考:
javax.servlet Official Servlet API Documentation
java.servlet.http API documentation