比如tomcat接受用户登录请求后,是不是为每个用户建立一个进程,
使得以后该用户的请求都通过这个进程建立其它的线程来处理?那么如果很多用户登录,岂不是要建立很多进程?还是tomcat用的是线程来跟踪用户?如果是进程的话,我怎么得到这个进程的引用?在java中如何得到执行当前java类的进程的引用?(不是线程引用)
使得以后该用户的请求都通过这个进程建立其它的线程来处理?那么如果很多用户登录,岂不是要建立很多进程?还是tomcat用的是线程来跟踪用户?如果是进程的话,我怎么得到这个进程的引用?在java中如何得到执行当前java类的进程的引用?(不是线程引用)
或者,在HttpServletRequest的getServletContext(Servlet容器实现不同,这个方法可能会有差异)获取当前HTTP请求所处的Servlet。
Servlet的生命周期:
init-service-destory三个方法生命周期管理是由servlet容器接管的,用户应用程序无需关心。
但总的来说,有以下阶段:
1)如果是单例的,用户请求到来,容器启动servlet的实例化,调用init进行初始化;紧接着调用service进行业务处理。service方法会去调用servlet的doPost,doGet等方法。请求完成后,容器调用destory进行销毁。2)如果不是单例的,如Struts的ActionServlet,它的生命周期与容器等长。它的生命周期开始于web.xml的配置文件,中间处理过程与普通servlet一样。当容器关闭、重启,servlet的生命周期也结束、重新开始。PS:servlet的生命周期管理方法都是回调方法,都是由容器进行调用。应用程序显式调用它们是没有效果的。如同Thread类的run方法,是由start调用的,手动调用run方法,与普通方法一样,但起不到预期的效果