WEB服务器概述

1 Web服务器

在学习JavaWeb的时候有一个很抽象的概念,叫做:web服务器,在学习的过程中一定会有下面这张图:

在这里插入图片描述

浏览器是我们经常要使用的一个软件,而数据库这种在以前的学习也不陌生,如果你要写一个有数据存储的软件,那就需要使用到数据库,而这个web服务器是我们之前没有接触过的东西。

本文就将Web服务器这个东西进行一下具体化。

1.1 什么是web服务器

这里说的web服务器应该是:Web Server——服务器软件(程序),或者是安装了这个软件的硬件。这个服务器的核心,就是对HTTP协议的实现。所以在学习JavaWeb一定要对HTTP协议以及相关的TCP/IP协议有一定的了解。

1.2 web服务器的工作

Web Server的主要工作就是通过HTTP协议与客户端进行通讯,处理客户端发送的HTTP请求,并且对这些请求HTTP请求做出回应,返回用户需要的内容,或者错误信息。

在我们日常使用浏览器的时候,我们想要访问哪个一个网页,就会在浏览器上输入网址(URL),或者点击某个链接(其实也是在跳转URL),这个就是我们发送的HTTP请求(Request),而Web Server就是来处理这些请求,并返回给我们相应的页面的(Respones)。如果错误我们也会看到像404这样的状态码,这也是错误信息的一种。所以在我们之后写程序的过程中会大量的运用到request和respones。

1.3 web服务器有哪些

常见的web服务器有:

服务器名称说明
weblogic实现了javaEE规范,重量级服务器,又称为javaEE容器
websphereAS实现了javaEE规范,重量级服务器。
JBOSSAS实现了JavaEE规范,重量级服务器。免费的。
Tomcat实现了jsp/servlet规范,是一个轻量级服务器,开源免费。

如果是初学Java web基本上都是使用Tomcat作为Web Server

1.4 小结

在初学JavaWeb的时候很多人都搞不懂什么是Web服务器、tomcat是做什么用的,Jsp和Servlet到底是个啥。

那这三者的关系就是Web服务器就是实现HTTP协议的软件,软件有很多,Tomcat是其中的一个,而Tomca实现了Jsp/servlet规范。

Tomcat、Jsp/servlet就是后面要学习的内容了。

2 Tomcat

2.1 Tomca是什么?

通过对Web服务器的学习,我们知道Tomcat是一种Web服务器。如果我们想要通过浏览器输入网址(HTTP请求)就可以访问我们的Web程序,我们就要将我们的Web程序放到我们的服务器上,这样是我们常说的讲程序部署到服务器上。

2.2 部署和不部署有什么区别?

相信大家在学习Java Web前都学习过H5 CSS JS这些,当我们将这些代码写完想要打开看卡效果,一般在网页上都是这个前端代码的文件绝对路径。如果你想用另一台电脑看这个页面的话,你输入这个路径肯就找不到了。

在这里插入图片描述

而这和我们平时上网是有出入的,我们上网是只要电脑连接了网络就,输入网址就可以访问一个网站,这里的网址就是URL,这个网址就是一个HTTP请求。

而我们自己写的web程序部署带Tomcat以后会是怎么样的呢?

在这里插入图片描述

我们来解析一下这个URL:

localhost表示的是服务器主机,因为是部署在自己的计算机上,所以是localhost

8888表示的是端口号

端口号后面的是资源路径

2.3 输入一个url发生了什么

简单点回答过程是:

  • DNS解析
  • TCP连接
  • 发送HTTP请求
  • 服务器 HTTP 应答
  • 浏览器解析渲染
  • 连接结束

而Tomcat参与的就是服务器对HTTP进行应答,这个步骤有接受连接、解析请求数据包、处理请求和发送响应。

通过HTTP请求,Tomcat可以找到部署的应用、相应的资源,然后返回给浏览器。这里的部署的应用就是我们部署上去的Java web程序。也就是说Tomcat可以解析我们的部署的Java Web程序,而这种程序不是我们普通写的拥有main方法的Java程序,而是Servlet程序,这也是为什么在学习java Web的时候,Servlet是重点内容,同时Servlet也是很多Web框架的基础,基本上都是对Servlet进行封装。

2.4 解析一个HTTP请求后,Tomcat的工作流程

在解析完HTTP以后,HTTP服务器不能直接调用具体的业务类,因为这些业务类是紧耦合的。所以是使用的HTTP服务器将请求交给Servlet来处理。

servlet容器的工作流程

当客户请求某个资源时:

  1. HTTP服务器会用一个ServletRequest对象把客户的请求信息封装起来,然后调用Servlet容器的service()方法
  2. Servlet容器根据请求的URL和Servlet的映射关系,找到相应的Servlet
    • 如果Servlet还没有被加载,就用反射机制创建Servlet对象,并调用Servlet的init方法来完成初始化,接着调用Servlet的service方法来处理请求
    • 如果Servlet已经加载,直接调用Servlet的service方法来处理请求
  3. 请求处理完毕,Servlet容器把ServletResponse对象返回给HTTP服务器,HTTP服务器会把响应发送给客户端
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值