Servlet 的生命周期(业务代码的执行顺序)
- 创建,重写(@Override)
init()
。此方法在第一次访问 servlet 时自动调用,只会执行一次 - 处理请求,重写
service()
。此方法每次访问 servlet 时都会自动调用,可以调用多次。 - 销毁,重写
destroy()
。此方法在服务器关闭时自动调用,只会执行一次。
Servlet 的运行工作过程
- 客户端想服务器的某个 servlet 容器发出 Http 请求。
- 服务器的 Servlet 容器接收到请求。
- 服务器的 Servlet 容器根据请求信息创建一个 HttpServletRequest 对象(此过程由 Servlet 自动容器完成),并将客户端的请求的信息封装到 HttpServletRequest 对象中。
- 服务器的 Servlet 容器创建一个 HttpServletRepose 对象(此过程由 Servlet 容器自动完成)。
- 服务器的 Servlet 容器调用 HttpServlet 对象
service()
方法,把 Request 和 Response 作为参数,传 HttpServlet 对象。 - HttpSevelet 对象调用 HttpServletRequest 对象的有关方法,获取客户端的 Http 请求信息。
- HttpServlet 对象调用 HttpServletResponse 对象的有关方法,生成相应数据。
- Servlet 容器把 HttpServlet 的相应结果传给客户端。
后记:
hexo 的这个 tags 和 categories 功能是真几把鸡肋啊,定位重复了,还不允许设置同为一级的 tags 和 categories。