谈到javaweb首先想到的就是servlet,说道servlet就会想到servlet的生命周期
那么servlet到底是什么时候出生,什么时候死亡叻
说道他的生命周期 就绕不过servlet的三个方法init service destroy
当我们将web项目部署到服务器,服务器启动的时候,这个时候servlet还没创建,,服务器启动了 开始对外提供服务,客户端可以访问了,
当某一个客户端第一次访问时候此servlet时候------》服务器找不到servlet对象-------》这个时候服务器就会创建servlet对象,并且调用init方法,使servlet初始化,获得他的初始化参数------》init方法调用完成serlvet对象就可以对外提供服务-------》web服务器调用servlet的service方法给客户端提供服务---》service服务完成servlet继续存在-------》第二客户端继续访问此servlet--------》服务器继续寻找servlet对象--------》存在此servlet对象-------》调用此对象的servlet方法提供服务。。。。。。---》不遇到特殊原因知道服务器关闭之前一直存在-------》当web服务器正常关闭的时候,此时调用servlet的destroy方法销毁,,,
当web服务器异常关闭时可能不会调用servlet的destroy方法,,,,
重点:
1.servlet不是一启动web服务器就创建对象,而是要客户端第一次访问,web服务器先查看自己有没有这个对象,没有才会创建,
但是有些servlet比较特殊,Web服务器创建时候创建,这是特殊的servlet
2.当web服务器创建servlet对象时候 就会调用init方法初始化servlet,获得servlet的初始化参数,
此init 方法,只会在生成对象的时候调用一次,提供服务的时候不调用
3.servlet对外提供服务是调用的他的service方法,调用完成后servlet未被销毁,还继续存在于web容器中,等待其他的用户访问时候继续调用他的service方法,所有servlet的service方法是可以被多次调用的
4.只有正常关闭服务器才会调用一次servlet的destroy方法
session生命周期,
session创建:在第一次使用resquest的getSession方法,web服务器会创建一个session
session使用:session在服务端创建完成后,内存会给session分配一定的空间,并且会生成一个临时cookie返回给用户,当用户第二次访问的时候会带上这个临时cookie,当第二次调用resquest的getSession方法时候,由于有此临时cookie携带的sessionid就可以找到session对应的内存空间,返回此session,此后只要用户访问时带上这个临时cookie就可以获得第一次创建的session,并访问对应的内存空间
session的销毁:
1.默认销毁:session是有默认时长的,默认情况下,当用户三十分钟不和服务器交互数据,session就会被自动销毁,
2.手动销毁:当调用session的invalidate方法时候会销毁此session
3.关闭服务器:内存空间被回收了,自然就不存在session了
原文地址:https://www.cnblogs.com/pcyiren/p/9241134.html