web服务器、tomcat、servlet是什么?它们之间的关系又是什么?

 

  今天偶然看到常见web服务器的介绍有Apache HTTP server、Nginx、Microsoft IIS、GWS,心中不由产生了疑问,这些都是什么呢?一直认为tomcat就是web服务器,如下是百度对web服务器的介绍。java

看到这可能有些同窗不明白,通俗点来讲web服务器的做用就是用户经过浏览器向web服务器发送http请求,web服务器解析http请求将请求路径的文件返回给浏览器,浏览器再将文件渲染显示给咱们看,所以web服务器的做用就是返回服务端的静态文件。web

  那么tomcat又是什么呢?在了解Tomcat以前咱们先要知道Servlet是什么,百度上说Servlet是用Java编写的服务器端程序,具备独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容,看到这可能又迷糊了,说半天仍是不知道Servlet是什么,其实Servlet就是一种用来处理网络请求的一套规范。api

  在用Eclipse搭建SSM项目的时候,不知道你们有没有导入过Servlet-api的jar包呢?这个实际上就是servlet以及它的实现。能够看到javax.servlet下的Servlet接口里面有Servlet的生命周期方法。浏览器

 

 而javax.servlet.http下的就是基于http通讯实现的servlet。而在tomcat的根目录的lib文件夹下也有servlet-api这个jar包,所以在tomcat运行应用程序时咱们就不须要额外导入这个jar包了。tomcat

能够看到HttpServlet接口就定义了咱们熟悉的一些http请求方法。服务器

  了解了什么是servlet后,那么tomcat天然就很好理解了,tomcat是servlet容器,同时它也包括了web服务器的功能,所以tomcat是web服务器的扩展,也能够理解为tomcat就是web服务器。那么为何说tomcat是servlet容器呢?字面意思容器就是能够容纳不少东西,众所周知,在tomcat上部署应用程序的时候,咱们是把应用程序放在tomcat根路径下的webapps文件夹下,而这个文件夹下能够放置多个应用程序,咱们能够经过请求来决定具体访问那个应用,由此咱们能够知道tomcat的整个运行流程网络

  (1)用户经过浏览器向服务器发送请求app

  (2)tomcat接收请求后解析请求具体访问哪一个应用webapp

  (3)tomcat建立一个HttpServletRequest对象,将用户发送的请求封装到这个对象里学习

  (4)tomcat建立一个HttpServletResponse对象

  (5)Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象做为参数传给 HttpServlet对象

  (6)HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息

       (7)HttpServlet调用HttpResponse对象的有关方法,生成响应数据

    (8)Servlet容器把HttpServlet的响应数据结果传给浏览器,浏览器再根据返回的response进行相应的渲染

 综上咱们还能够猜想到servlet的出现就是弥补之前web服务器只能访问静态资源的问题,有了servlet咱们就能够经过浏览器与服务端进行动态交互了。

以上是我学习后根据我的理解及查阅相关资料进行的总结,若有错误欢迎指正。

相关文章
相关标签/搜索