0415-web:web服务器

2020-04-15  本文已影响0人  小咕咕coco

网络上的服务器

组成

硬件或软件,或者是它们协同工作的整体。

分类

静态/动态
http server/application server(+database)
:是否能动态的生成资源并返回

Http Server

关心的是HTTP协议层面的传输和访问控制,的一个应用程序

Application Server

一个应用执行的服务器

与HTTP Server

Tomcat

实践

我的tomcat安装在了/usr/local/apache/里,到里面的bin下启动

#启动
cd /usr/local/apache/apache-tomcat-9.0.14/bin 
sudo ./startup.sh
#关闭
sudo ./shutdown.sh

然后在localhost:8080就可以访问webapp文件夹下的web应用:
比如localhost:8080/examples,就对应apache-tomcat-9.0.14/webapps/examples
而examples是一个典型的webapp总目录
如果我们需要部署的话,直接放在tomcat安装目录的webapps文件夹下即可,然后用localhost:8080/ProjectName/访问

框架

Tomcat 是一个「Application Server」,更准确的来说,是一个「Servlet/JSP」应用的容器

关于容器和serlet的配合工作
Web Client 向Servlet容器(Tomcat)发出Http请求;
Servlet容器接收Web Client的请求;
Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中;
Servlet容器创建一个HttpResponse对象;
Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet对象;
HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息;
HttpServlet调用HttpResponse对象的有关方法,生成响应数据;
Servlet容器把HttpServlet的响应结果传给Web Client;</pre>
Tomcat结构

Tomcat 也非常的模块化


2062729-15bb966deef614f5.png
  1. Server(服务器):Tomcat构成的顶级构成元素,所有一切均包含在Server中,Server的实现类StandardServer可以包含一个到多个Services;
  2. Service:调用了容器(Container)接口,其实是调用了Servlet Engine(引擎)
  3. 容器(Container):
    • 主机(Host)、上下文(Context)和引擎(Engine)均继承自Container接口,所以它们都是容器。
    • 但是,它们是有继承关系的,引擎(Engine)->主机(Host)->上下文(Context)
  4. 连接器(Connector):将Service和Container连接起来:注册到一个Service,把来自客户端的请求转发到Container(容器)
工作流程
  1. 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得;
  2. Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应;
  3. Engine获得请求localhost:8080/test/index.jsp,匹配它所有虚拟主机Host;
  4. Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机);
  5. localhost Host获得请求/test/index.jsp,匹配它所拥有的所有Context;
  6. Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为""的Context去处理);
  7. path="/test"的Context获得请求/index.jsp,在它的mapping table中寻找对应的servlet;
  8. Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类;
  9. 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法;
  10. Context把执行完了之后的HttpServletResponse对象返回给Host;
  11. Host把HttpServletResponse对象返回给Engine;
  12. Engine把HttpServletResponse对象返回给Connector;
  13. Connector把HttpServletResponse对象返回给客户browser;
上一篇 下一篇

猜你喜欢

热点阅读