创建Servlet需要使用Servlet API,Servlet API 相关类包含在2个包里:
javax.servlet
– 通用 servlet 相关类的包,协议无关javax.servlet.http
http servlet 相关类的包,跟http协议相关
包的层次结构:
java.lang.Object
|_extended byjavax.servlet.GenericServlet
|_extended byjavax.servlet.http.HttpServlet
Java Servlet只是实现接口javax.servlet.Servlet
的普通类,可以通过继承以下2个类实现javax.servlet.Servlet
接口,因为这2个类已经实现了javax.servlet.Servlet
接口:
GenericServlet
– 通用的Servlet类javax.servlet.http.HttpServlet
– http Servlet类,处理http请求
servlet运行原理图
GenericServlet
如前所述,通用Servlet必须继承javax.servlet.GenericServlet
类,子类通过重写GenericServlet
类的抽象函数 service()
处理请求、返回响应给客户端。
service()方法声明:
public abstract void service(ServletRequest request, ServletResponse response)
throws ServletException, java.io.IOException
service()方法有2个参数ServletRequest
和ServletResponse
,ServletRequest
表示客户端发出的请求,ServletResponse
表示返回给客户端的响应。
HTTPServlet
创建Http Servlet必须继承javax.servlet.http.HttpServlet
类,与通用Servlet不同,子类不用重写service()
方法,而是重写下面的方法(至少一个),这些方法由 service()
方法调用:
doGet()
– 处理HTTP GET请求doPost()
– 处理HTTP POST请求,用于将信息发布到服务器doPut()
– 处理HTTP POST请求doDelete()
– 处理HTTP DELETE请求,从服务器删除文档、网页或信息init()
与destroy()
– 用于在servlet生命周期中保留/释放资源getServletInfo()
– 返回关于servlet的信息,如作者、版本和版权
当http 请求到达时,service()
会调用相应的方法处理,例如,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