Tomcat、Servlet、Servlet容器

Tomcat

简单一句话:Tomcat是一个Servlet容器。这个容器当然就是装Servlet用的。那Servlet是什么,就是一个(按照Servlet规范写的一个)java类。
这个“装”怎么理解:*实现了Servlet、JSP规范,同时提供http服务。*其实,就像社会与人的关系:社会制定能够规范,人按照规范做事。然后社会保证你和其他人的良好沟通。
解决问题:处理动态页面(jsp等)

Servlet 容器

Servlet容器也叫做Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于 MIME的请求,格式化基于MIME的响应。Servlet没有main方法,不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用 Servlet的方法(如doGet()和doPost()),Servlet容器在Servlet的生命周期内包容和管理Servlet。在JSP技术 推出后,管理和运行Servlet/JSP的容器也称为Web容器。

Servlet

Servlet(Server Applet),全称Java Servlet。是用Java编写的服务器端程序。是一个基于java技术的web组件,运行在服务器端,它由Servlet容器所管理,其主要功能在于交互式的浏览和修改数据,生成动态Web内容。

Servlet是在javax.serlvet包中定义的一个接口。它声明了servlet生命周期中必不可少的三个方法-init()、service()和destroy()。每个servlet(无论是在SDK中定义的,或是自定义的)都必须实现这三个方法,而且由服务器在特定的时刻调用。

1. init()方法在servlet生命周期的初始化阶段被调用。它传递一个实现了javax.servlet.ServletConfig接口的对象,使得servlet能够从web application中获取初始化参数。

2. servlet初始化后,每接收一个请求,就会调用service()方法。每个请求的处理都在独立的线程中进行。Web服务器对每个请求都会调用一次service()方法。service()方法判断请求的类型,并把它转发给相应的方法进行处理。

3. 当需要销毁servlet对象时,就要调用destroy()方法。该方法释放被占用的资源。

和所有的Java程序一样,servlet运行在JVM中。引入servlet容器是为了处理复杂的HTTP请求。Servlet容器负责servlet的创建、执行和销毁。

工作模式

  1. 客户端(通常都是浏览器)访问Web服务器,发送HTTP请求。
  2. Web服务器接收到请求后,传递给Servlet容器。
  3. Servlet容器加载Servlet,产生Servlet实例后,向其传递表示请求和响应的对象。
  4. Servlet实例使用请求对象得到客户端的请求信息,然后进行相应的处理。
  5. Servlet实例将处理结果通过响应对象发送回客户端,容器负责确保响应正确送出,同时将控制返回给Web服务器。

HttpServlet

javax.servlet.http.HttpServlet实现了专门用于响应HTTP请求的Servlet,提供了响应对应HTTP标准请求的doGet(),doPost()方法。

生命周期

当servlet被部署在应用服务器中(应用服务器中用于管理java组件的部分被抽象为容器),有容器控制servlet的生命周期。除非特殊指定,否则在容器启动的时候,servlet是不会被加载的,servlet只会在第一次请求的时候会被加载和实例化。servlet一旦被加载,一版不会从容器中删除,直至应用服务器关闭或重新启动,但当容器做存储器回收动作时,servlet有可能被删除,也正是因为这个原因,第一次访问servlet所用的时间要大大多于以后访问所用的时间。

实例

扫描二维码关注公众号,回复: 11616866 查看本文章

import javax.servlet.http.HttpServlet

@WebServlet(name=‘light’,urlPatterns=)

Tomcat与Apache服务器的关系

Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。

Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,serverlet)。

Apache是普通服务器,本身只支持html即普通网页。不过可以通过插件支持php,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资源。反之不然)

两者都是一种容器,只不过发布的东西不同:Apache是html容器,功能像IIS一样;Tomcat是jsp/servlet容器,用于发布jsp及java的,类似的有IBM的webshere、EBA的Weblogic,sun的JRun等等。

Apache和Tomcat是独立的,在同一台服务器上可以集成。

打个比方:Apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),Tomcat就是一个桶(装像Java这样的水),而这个桶也可以不放在卡车上。

Apache只支持静态网页,但像asp,php,cgi,jsp等动态网页就需要Tomcat来处理。

猜你喜欢

转载自blog.csdn.net/weixin_38851970/article/details/107094295