• 什么是servlet?

它是运行在Web服务器或其他应用服务器的程序,他是作为来自Web浏览器和其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。

优势:

  1. 在WEB服务器的地址空间内执行,无需创建一个单独的进程来处理客户端的请求
  2. 独立于平台
  3. 是可信的,因为服务器上的java安全管理器执行了一系列限制,以保护服务器计算机上的资源
  4. java类库的全部功能对sevlet来说是可用的。它可以通过sockets和RMI机制与applets、数据库或其他软件进行交互

  • Servlet框架

Servlet——生命周期

  • Servlet的任务:
  1. 读取客户端发送的显式数据
  2. 读取客户端发送的隐式的HTTP请求数据,包括cookies,媒体类型,浏览器能理解的压缩格式
  3. 处理数据并生成结果,访问数据库,执行RMI或CORBA调用,调用web服务或者直接计算的出对应的响应
  4. 发送显式数据到客户端
  5. 发送隐式HTTP响应到客户端

  • Servlet生命周期

  1. init()初始化,在第一次创建servlet时调用,产生一个servlet实例,创建新的线程,在后续每次用户请求时不再创建。init()会加载一些数据,这些数据将被用于servlet整个生命周期

public void init() throws ServletException{
...
...
}

    2.service()实际执行任务的主要方法。Servlet容器调用service()方法处理来自客户端的请求,并把格式化的响应写回客户端。每次服务器接收一个servlet请求时,服务器会产生的一个新的线程并调用服务。service()方法检查HTTP请求类型(GET,PUT,POST,DELETE),并在适当的时候调用doGET,doPUT,doPOST,doDELETE等方法

public void service(ServletRequest request, ServletResponse response)
throws ServletException,IOExcepetion{
...
...
}
  • doGET() GET请求来自URL的正常请求,或者来自一个未指定MOTHESD的html表单

public void doGet(HTTPServletRequest request,
HTTPServletResponse,response)
throws ServletException,IOExcepetion{
...
...
}

  • doPOST() POST请求来源于一个指定了MOTHED为post的HTML表单

public void doPost(HTTPServletRequest request,
HTTPServletResponse,response)
throws ServletException,IOExcepetion{
...
...
}

    3.destory()方法在servlet生命周期结束之时调用,destory()可以使servlet关闭数据库链接,停止后台线程,把cookie列表或点计数器写入磁盘,并执行其他类似的清理活动。调用destory()之后servlet对象被标记为垃圾回收、

public void destory(){
...
...
}

生命周期架构图:多个线程处理多个service请求

Servlet——生命周期


相关文章:

猜你喜欢
  • 2021-07-29
  • 2021-11-08
  • 2021-04-24
相关资源
相似解决方案