Servlet API

创建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个参数ServletRequestServletResponseServletRequest表示客户端发出的请求,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


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载