servlet的生命周期
可以被定义为servlet对象从创建到销毁的整个过程:
1)在创建servlet对象时,通过调用init()方法进行初始化
2)通过service()方法来处理客户端的请求,根据请求方式的不同转发给doGet()或doPost()方法
3)停止服务时,通过调用destory()方法销毁servlet对象
4)servlet对象被JVM垃圾回收器回收
public void init() throws ServletException {
/* 初始化方法\
* 1 只会调用一次
* 2 在创建servlet对象时调用,在后续每次用户请求时不再调用 */
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/* service()方法,是执行实际业务的主要方法,由servlet的对象的容器调用service方法
* 作用:处理来自客户端的请求,并把格式化的响应写回给客户端
* 1 service()方法由容器调用
* 2 service()方法回检查HTTP请求类型, */
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*
* HttpServletRequest,接收HTTP请求,
* 提供了一系列的方法来:
* 1 接收HTTP头信息、cookies
* 2 获取HTTP请求参数
* 3 设置HTTP请求编码
* 4 获取HTTP的请求方式GET/POST
*/
System.out.println("接受HTTP的GET方式请求");
req.setAttribute("name", "张三");
//请求转发:通过请求转跳转到JSP页面
req.getRequestDispatcher("/WEB-INF/page/demo.jsp").forward(req, resp);
}
public void destroy() {
/* 销毁servlet对象
* 1 destroy方法只调用一次,在servlet对象生命周期结束时被调用
* 2 destroy方法可以关闭数据库链接,停止后台线程,把cookie或者缓存写入硬盘以及其他清理活动
* 3 在调用destroy方法后,servlet对象会被Gc线程标记为被回收的资源 */