Hello Web(纯文字没图这个系列我写着都好烦)
这个系列的笔记会把自己理解的网页到服务端一些总结,整个过程从页面到服务器文件停止,并不涉及过多后台逻辑内容
因为个人水平有限,有可能理解有偏差,如果坑了各位,-_-# 你又不能打我
阅读这个系列前需要先搞懂以下知识点
服务器容器
接触到网络的人都知道服务器的概念,从硬件上来讲服务器就是一个24小时运行的电脑,和家里的PC没什么本质上的区别,而从软件概念上来讲是指的服务器容器,而我们最常见的服务器容器有4个
服务器容器 | 开发组织 | 服务器归类 |
---|---|---|
Apache | Apache | 静态服务器 |
Niginx | 一个叫Igor Sysoev毛子写的(这个屌这个屌) | 静态服务器 |
Tomcat | Apache | 动态服务器 |
Jetty | Eclipse(没错,就是那个IDE的公司) | 动态服务器 |
其中最令人迷惑的是 静态服务器 和 动态服务器 的概念,该概念会在静态网页与动态网页中详细讲解,其主要区别就是:
- 静态服务器只是用来存放文件,动态服务器可以完成Servlet等逻辑功能
服务器容器如何工作
网页是什么
了解过HTML基础知识之后,可以知道网页实质就是一个HTML文件,是一堆由各种DOM组成的文本,使用具有解析功能的浏览器软件,即时是放在本地,也可以对这些文本进行解析展示给用户,我们只需要找到这个文件的存放地址,然后用浏览器打开就可以了。
如何找到HTML文件
与磁盘里存在C盘某某某文件夹不同,这个文件存放在服务器电脑的硬盘里,我们就需要用HTTP协议把他读出来
1 | http://127.0.0.1:8080/page.html |
以上就是一个完整的HTTP请求,请求的文件是page这个html文件,根据HTTP讲解文章里提到的HTTP本质还是电报和电话,既然你想要随时访问服务器,那么服务器就需要有个人24小时不睡觉等着回复你HTTP返回报文,这个人就是服务器容器,我们以Tomcat举例
去下载一个服务器
Apache官网可以下载到不同的服务器版本,下载符合自己系统的Core,比如我下载的就是zip的在Mac上解压开得到一个大概15M的文件夹,这个就是一个完整的服务器容器
文件/文件夹 | 用途 |
---|---|
bin | binary文件夹,主要是执行启动/关闭的脚本 |
conf | configure文件夹,主要包括了服务器容器配置文件server.xml和webapp的默认配置文件web.xml |
lib | 库文件目录,由于Tomcat是基于Java的,这里存放了Tomcat使用的jar文件 |
LICENSE | 许可文件,(つД`)ノ土鳖的我看不懂的文件1 |
logs | 默认日志文件目录 |
NOTICE | 通知文件,(つД`)ノ有点像TokyoHot开头那个WARNING |
RELEASE-NOTES | 发布笔记,(つД`)ノ土鳖的我看不懂的文件2 |
RUNNING | 跑?什么鬼,(つД`)ノ土鳖的我看不懂的文件3 |
temp | 临时文件存放处 |
webapps | web应用目录(十分重要) |
work | 工作区,主要是和servlet相关 |
可以看出来Apache的命名是很有讲究的,其中文件采用全大写命名,而文件夹使用全小写命名
启动服务器容器
如果想启动Tomcat只需要在终端进入bin文件执行starup脚本就可以了,这个程序就会24小时不停的监听8080端口有没有HTTP的Request请求,这里有两个注意点
- 你需要有执行startup.sh的权限(错误会提示Permission Deny)
- 你需要执行正确位置的startup.sh脚本(错误会提示 command not found)
1 | cd .../Tomcat/bin |
注意执行脚本时要指定绝对目录,不要cd到bin之后 sudo startup.sh 这是执行Mac系统bin文件下的startup脚本,系统中不存在,当然会存在问题2,详细原因需要学习Unix系统
Page.html文件在哪
在刚刚提到了所谓网页就是存放在服务器的一个page.html文件,可以通过HTTP请求访问到,那么这个文件在哪呢?是放在了服务器的C盘么?
webapps文件
在默认配置下,所有的当你使用ip+端口号访问服务器时,会访问到Tomcat服务器的webapps/ROOT文件夹,所以具有以下映射关系
访问URL | 对应服务器文件夹 |
---|---|
http://127.0.0.1:8080/ | Tomcat/webapps/ROOT |
http://127.0.0.1:8080/page.html | Tomcat/webapps/ROOT/page.html |
根目录的配置
由此我们可以知道,通过浏览器是如何访问服务端的文件的了,但是你说我不想放在ROOT下能不能访问到呢?
答案是可以的,可以通过修改服务器容器配置server.xml来配置服务器(硬件)计算机上的任何一个目录当作容器的根目录
访问Page文件的过程
在知道如何访问服务器文件之后,那我可以不可以和放在C盘的文件一样,到服务器的目录里把文件剪切过来呢?
答案是 不可以
HTTP协议访问
与访问本机文件不同,访问服务器是通过HTTP协议进行的,你访问的并不是真实的这个文件,只是HTTP返回报文的报文体正好是这个文件的内容
访问过程
- 浏览器浏览 127.0.0.1:8080/page.html,发送了一个HTTP的Request报文
- Tomcat在服务器监听到Request的请求,去ROOT目录寻找page.html文件
- page.html不存在,展示404页面,page.html文件存在,读取page.html的所有文本(Ctrl-C)
- 在HTTP请求的Response的报文体中写入page.html文本(Ctrl-V)
- 浏览器接收到HTTP的Response报文,把报文体显示在页面中
从以上过程可以看出,和访问本地文件不同,你并不是真正 打开 了page.html这个文件,而是 浏览 了page的内容,你能读取到什么内容完全取决HTTP请求的Response报文体
一个网页的诞生
综上所述,我们通过一台电脑,一个Tomcat容器,经由HTTP协议,建立了一个服务器,任何一个人只要知道地址就可以来 浏览 服务器上的文件。这就是一个网页的诞生的过程。
接下来Hello Web(二)将要讲述另外一个概念 静态网页与动态网页