Java Servlet 的核心工作机制
能不能说得再深入一点?比如servlet怎么在tomcat中运行的?比如servlet是什么时候销毁的?是否是在请求(get,post)执行完毕?越细节越好...
能不能说得再深入一点? 比如servlet怎么在tomcat中运行的? 比如servlet 是什么时候销毁的? 是否是在请求(get,post)执行完毕? 越细节越好
展开
2个回答
展开全部
Servlet是运行在Servlet容器中的,由Servlet容器来负责Servlet实例的查找、创建以及整个生命周期的管理,Servlet整个生命周期可以分为四个阶段:类装载及实例创建阶段、实例初始化阶段、服务阶段以及实例销毁阶段。
类装载及实例创建阶段
默认情况下,Servlet实例是在接受到第一个请求时进行创建并且以后的请求进行复用,如果有Servlet实例需要进行一些复杂的操作,需要在初始化时就完成,比如打开文件、初始化网络连接等,可以配置在服务器启动时就创建实例,具体配置方法为在声明servlet标签中添加<load-on-startup>1</load-on-startup>标签。
初始化 init(ServletConfig config)
一旦Servlet实例被创建,将会调用Servlet的inint方法,同时传入ServletConfig实例,传入Servlet的相关配置信息,init方法在整个Servlet生命周期中只会调用一次。
服务 services()
为了提高效率,Servlet规范要求一个Servlet实例必须能够同时服务于多个客户端请求,即service()方法运行在多线程的环境下,Servlet开发者必须保证该方法的线程安全性。
销毁 destory()
当Servlet容器将决定结束某个Servlet时,将会调用destory()方法,在destory方法中进行资源释放,一旦destory方法被调用,Servlet容器将不会再发送任何请求给这个实例,若Servlet容器需再次使用该Servlet,需重新再实例化该Servlet实例。
二、Servlet执行流程
web服务器接受到一个http请求后,web服务器会将请求移交给servlet容器,servlet容器首先对所请求的URL进行解析并根据web.xml 配置文件找到相应的处理servlet,同时将request、response对象传递给它,servlet通过request对象可知道客户端的请求者、请求信息以及其他的信息等,servlet在处理完请求后会把所有需要返回的信息放入response对象中并返回到客户端,servlet一旦处理完请求,servlet容器就会刷新response对象,并把控制权重新返回给web服务器。
三、与其它技术的比较
与其它服务相比servlet有以下的一些优点:
1、运行速度上比CGI快,因为使用了多线程
2、servlet使用了标准的api,可被许多web服务支持
3、与系统无关性,一次编译多次使用
转自http://www.javaeye.com/topic/952866
类装载及实例创建阶段
默认情况下,Servlet实例是在接受到第一个请求时进行创建并且以后的请求进行复用,如果有Servlet实例需要进行一些复杂的操作,需要在初始化时就完成,比如打开文件、初始化网络连接等,可以配置在服务器启动时就创建实例,具体配置方法为在声明servlet标签中添加<load-on-startup>1</load-on-startup>标签。
初始化 init(ServletConfig config)
一旦Servlet实例被创建,将会调用Servlet的inint方法,同时传入ServletConfig实例,传入Servlet的相关配置信息,init方法在整个Servlet生命周期中只会调用一次。
服务 services()
为了提高效率,Servlet规范要求一个Servlet实例必须能够同时服务于多个客户端请求,即service()方法运行在多线程的环境下,Servlet开发者必须保证该方法的线程安全性。
销毁 destory()
当Servlet容器将决定结束某个Servlet时,将会调用destory()方法,在destory方法中进行资源释放,一旦destory方法被调用,Servlet容器将不会再发送任何请求给这个实例,若Servlet容器需再次使用该Servlet,需重新再实例化该Servlet实例。
二、Servlet执行流程
web服务器接受到一个http请求后,web服务器会将请求移交给servlet容器,servlet容器首先对所请求的URL进行解析并根据web.xml 配置文件找到相应的处理servlet,同时将request、response对象传递给它,servlet通过request对象可知道客户端的请求者、请求信息以及其他的信息等,servlet在处理完请求后会把所有需要返回的信息放入response对象中并返回到客户端,servlet一旦处理完请求,servlet容器就会刷新response对象,并把控制权重新返回给web服务器。
三、与其它技术的比较
与其它服务相比servlet有以下的一些优点:
1、运行速度上比CGI快,因为使用了多线程
2、servlet使用了标准的api,可被许多web服务支持
3、与系统无关性,一次编译多次使用
转自http://www.javaeye.com/topic/952866
展开全部
1、首先Servlet是由Servlet容器管理的,比如tomcat,它是不能单独存在的。
2、当一个请求发送到服务器的时候,容器会实例化一个servlet实例。
3、紧接着会调用servlet的init()方法。
4、进而会调用service()方法,该方法根据请求类型(post或者是get)调用相应的方法(doPost或者doGet)
5、在doPost或者doGet方法中可以得到请求参数request和响应参数response,有了这两个参数之后,你可以在方法中做一些逻辑处理,最终可以做出相应的响应,比如(跳转页面和返回输出流等)。
6、当返回结束之后,servlet会被销毁,销毁的方法是destroy()。
2、当一个请求发送到服务器的时候,容器会实例化一个servlet实例。
3、紧接着会调用servlet的init()方法。
4、进而会调用service()方法,该方法根据请求类型(post或者是get)调用相应的方法(doPost或者doGet)
5、在doPost或者doGet方法中可以得到请求参数request和响应参数response,有了这两个参数之后,你可以在方法中做一些逻辑处理,最终可以做出相应的响应,比如(跳转页面和返回输出流等)。
6、当返回结束之后,servlet会被销毁,销毁的方法是destroy()。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询