servlet与tomcat

来源:互联网 发布:mac防蹭网软件 编辑:程序博客网 时间:2024/05/18 01:08

原文:

http://blog.knowsky.com/207791.htm

整理:

1.servlet的工作过程以及容器的作用

Servlet没有main()方法,他们受控与另外一个java应用,这个java应用称为容器(Container)。Tomcat就是这么一个容器,web服务器应用(如Apache)得到一个指向Servlet的请求时,服务器不是把这个请求交给Servlet本身,而是交给部署该servlet的容器。要由容器向servlet提供HTTP请求和响应,而且是由容器调用servlet的方法(doGet()和doPost())。容器运行多个servlet线程来处理对同一servlet的多个请求。(对每个请求分配一个线程,而不是每个客户)

这里又得谈谈容器的作用了。

1)通信支持。利用容器提供的方法,web服务器能轻松的与servlet进行通信。

2)生命周期管理。容器控制着servlet的生与死。它会负责加载类,实例化,初始化,调用servlet的方法以及使servlet能够被垃圾回收。

3)多线程支持。容器会自动的接受每个servlet请求,创建一个新的java线程。针对每个请求,如果servlet已经运行完相应的HTTP方法,线程就会结束。但是我们同时也得考虑线程的安全性。

4)JSP支持。负责将JSP翻译成真正的java。


2.容器是如何处理用户请求的

1)用户点击一个链接,指向一个servlet而不是一个静态页面。

2)web服务器接到这个请求后转发给容器。容器接着创建两个对象:HttpServletRequest和HttpServletResponse。

3)容器根据请求中的URL找到相应的servlet,为这个请求创建一个线程,并把请求对象HtttpServletRequest和响应对象HttpServletResponse传递给这个servlet线程。

4)线程接下来调用service()方法,根据请求的不同,service()方法调用doGet()和doPost()方法。

5)doGet()方法生成动态页面,并把这个页面塞到响应对象里。

6)service()方法结束,随之线程结束,容器把响应对象装换为一个HTTP相应,发送给客户,然后删除请求和响应对象。


3.tomcat为什么是容器而不是服务器,他和服务器差在哪
servlet容器、web容器和应用服务器servlet容器的主要任务是管理servlet的生命周期。而你说的web容器更准确的说应该叫web服务器,它是来管理和部署web应用的。还有一种服务器叫做应用服务器,它的功能比web服务器要强大的多,因为它可以部署EJB应用,可以实现容器管理的事务,一般的应用服务器有weblogic和websphere等,它们都是商业服务器,功能强大但都是收费的。web容器最典型的就是tomcat了,Tomcat是web容器也是servlet容器。


0 0