二 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]

二 Servlet API

 

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]

二 Servlet API

 

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