WEB简述
Web概述
什么是Web
- Web(World Wide Web)即全球广域网,也成为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
什么是JAVA WEB
使用java语言进行WEB的开发
软件架构:
- CS架构的软件
- CS:Client/Server客户端和服务器,这种软件往往需要安装。比如QQ、迅雷、播放器。
- 优缺点:
- 优点:可以减轻服务器端压力,将部分代码写到客户端。软件界面比较美观。
- 缺点:一旦服务器进行了更新,客户端需要同步更新才能继续使用。分布式开发比较弱。
- BS架构的软件
- BS:Browser/Server浏览器和服务器,这种软件不需要安装,只需要通过浏览器就可以访问。
- 优缺点:
- 优点:服务器更新,客户端不需要同步更新也能继续访问。比较强的分布式能力。
- 缺点:服务器压力较大。界面不如CS结构软件美观
WEB服务器
- 硬件:本质上是配置较高的计算机
- 软件:需要在计算机上安装WEB服务器的软件
- 常见的软件:
- Tomcat:Apache提供的开源的免费的Web服务器。满足EE的Servlet和JSP的规范。
- WebSphere:IBM开发的一个收费的大型web服务器,满足了EE开发的所有规范。
- WebLogic:BEA开发的一个收费的大型web服务器,满足了EE开发的所有规范。
- IIS:应用在.net平台的web服务器。
- Apache:应用在php平台的web服务器。
WEB开发中的资源
- 静态web资源:HTML、CSS、JS
- 动态web资源:Servlet、JSP、PHP、ASP
Tomcat
Tomcat概述
- Tomcat是Apache项目中的一个核心项目,是一个免费的开源的Web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选。
Tomcat的使用
-
启动:在Tomcat的bin路径下打开startup.bat
-
关于Tomcat使用的一些问题
-
当Tomcat打开发现窗口闪退可以通过编辑Startup.bat文件,在末尾插入
pause
暂停来查看原因 -
当Tomcat正常运行却仍然无法访问localhost:8080时就需要查看是否是端口占用,具体方法为在cmd窗口中使用
netstat -ano|findstr "8080"
来查看8080端口占用情况,具体解决有两种办法:-
解除该端口的占用
- 方法一:taskkill /pid [PID] /f
- 方法二:打开任务管理器,在详细信息中找到占用端口的PID的应用,然后停止运行。
-
修改端口号,在Tomcat/conf/server.xml中修改端口号为非占用端口号
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
-
-
Tomcat目录结构:
- bin:二进制文件/执行文件(命令文件)
- conf:配置文件
- logs:日志文件
- libs:Tomcat依赖jar包
- temp:运行时产生的临时文件
- webapps:发布的项目需要放在该文件
- work:JSP翻译(编译)成Servlet产生的代码
动态Web资源的目录结构
website(根路径)
|---静态资源(HTML\CSS\JS\图片)
|---JSP页面
|---WEB-INF
|---|---web.xml(项目的基本配置)
|---|---classes(被编译的java类/Servlet)
|---|---lib(第三方jar包)
Tomcat项目发布方式
直接将项目复制到tomcat/webapps下
- 放好项目
- 启动Tomcat
- 在浏览器中地址栏输入:localhost/[projectName]/[htmlName].html
在tomcat/conf/server.xml配置tomcat的虚拟路径
-
虚拟路径:配置一个名称与一个真实的路径进行绑定,然后访问这个名称从而找到真实路径。
-
如何配置虚拟路径:
-
在Tomcat/conf/server.xml中进行配置(可以在Tomcat的文档中找到,启动Tomcat,在localhost:8080中找到)
-
在
<Host></Host>
标签中配置如下:<Context path="/[VirtualPth]" docBase="[RealPath]"></Context>
-
启动服务器访问:localhost:8080/[VirtualPth]/[htmlName].html
-
-
缺陷:server.xml为Tomcat的核心配置文件,一旦出错,Tomcat将不能运行
在tomcat/conf/Catalina/localhost下配置tomcat的虚拟路径
-
配置虚拟路径,在Tomcat/conf/Catalina/[hostname]/ 下新建任意命名的xml文件,在其中编写内容:
<!-- xml文件必不可少的标题 --> <?xml version='1.0' encoding='utf-8'?> <Context docBase="[RealPath]"></Context>
-
文件名就是虚拟路径(itcast),只需要访问itcast就可以访问项目,具体路径为:
localhost:8080/[xmlName]/[htmlName].html
Tomcat后谈
Tomcat本身作为很优秀的Web容器,日常使用的多种IDE包括eclipse、IDEA等都兼容,配置好后可以进行更加方面的操作,本文仅仅是作为笔记模式的归纳整理,关于IDE中Tomcat的使用以后会单独整理。
Tomcat虚拟主机
网站访问的全过程(计算机网络)
- 客户端传入域名(https://www.xxx.com)
- https(Hyper Text Transfer Protocol over SecureSocket Layer):经过SSL加密的超文本传输协议
- www(World Wide Web):万维网,本质上是一个超文件系统,包括web服务器和web客户端两部分。存储超文本文档的计算机称为主机服务器。
- xxx.com:域名(Domain Name),又称网域,是Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。由于IP地址不具有方便记忆且不能显示地址组织信息的缺点,所以通过域名解析系统将域名和IP地址相互映射。
- 在host文件中检索域名对应的ip地址,如果找到则向ip地址发送请求,如果没有找到,则进行下一步
- 向DNS服务器发送域名检索请求进行检索,如果找到则进行访问,没有则返回404
本地DNS服务器、DNS服务器和HOSTS文件的区别和联系
DNS服务器(域名解析系统):是一个将域名或IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。使用端口53。
本地DNS服务器:其是就近路由器的DNS转发器,路由器将发往他所有的DNS请求转发到上层DNS,严格来说不算DNS。
HOSTS文件:是一个没有扩展名的系统文件,作用是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,其映射是静态的,不会随IP地址的更新而更新。可以看作为一个DNS的本地缓存。
虚拟主机的概述
什么是虚拟主机?
在计算机中设置一个目录,使用一个name与该目录进行绑定。这个路径就叫做一个虚拟主机。主机是可以发布web项目的。
虚拟主机的配置
-
自定义一个路径作为虚拟主机,例如我是用
E:\VirtualTest\
作为虚拟主机。 -
在虚拟主机中添加项目。
-
在Tomcat/conf/server.xml中建立
<Host>
标签添加虚拟主机信息(server.xml文件中有localhost主机作为模板):<!-- 属性name为自定义虚拟主机名,属性appBase为虚拟主机目录 --> <Host name="[url]" appBase="E:\VirtualTest" unpackWARs="true" autoDeploy="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
-
修改本地的hosts文件
将server.xml中的name属性通过hosts映射到你所需要的IP地址(可以是本地IP,通过cmd的ipconfig查看)。地址为
appBase
。Hosts文件位置:
C:\Windows\System32\drivers\etc\hosts
-
启动服务器访问项目
-
通过在server.xml中修改端口号,以及配置虚拟路径,可以直接通过
主机名/xxx.html
直接访问页面。
-
可以通过设置默认首页通过
直接访问页面。
-
添加默认页面的方式:
在Tomcat/conf/web.xml中找到:
<!-- 在该标签内添加默认页面 --> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
-
-
重启服务器,访问页面
-
(番外)虚拟主机的作用
通过虚拟主机的方式,不仅仅可以搭建自己的网站。同样,也可以通过这样的方式覆盖已经存在的真实网站,以此来达成自己的目的,这种方式做成的网站就叫做钓鱼网站。希望大家能明白钓鱼网站的原理, 提高安全意识,减少上当受骗。技术之可用作学习,不可行违法之事。
HTTP协议
HTTP协议的概述
- http协议(Hyper Text Transfer Protocol):超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。
- 是万维网的数据通信的基础。
- 是一种简单的请求-响应协议,通常运行在TCP协议之上,属于应用层协议。
- 规定了浏览器和服务器的数据交互的格式。
HTTP协议的特性
- 基于请求和响应模型
- 必须要先有请求,后有相应。
- 请求和响应必须成对出现。
- 简单快捷
- 因为发送请求的时候只需要发送请求方式和请求路径即可。
HTTP协议的抓包分析
通过一些软件/插件进行抓包:
- Chrome插件Web sniffer
- 软件HTTP Watch
get方式:
请求:
GET /serverTest/index.html HTTP/1.1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 Edg/87.0.664.41
响应:
HTTP/1.1 200
Date: Sat, 21 Nov 2020 08:16:02 GMT
Accept-Ranges: bytes
ETag: W/"629-1605945384963"
Last-Modified: Sat, 21 Nov 2020 07:56:24 GMT
Content-Type: text/html
Content-Length: 629
post方式:
请求:
//请求行
POST /serverTest/submit.html HTTP/1.1
//请求头
Host: localhost:8080
Connection: keep-alive
Content-Length: 66
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 Edg/87.0.664.41
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/serverTest/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
//请求体,在古老的版本中,请求体常常是明文,后来进行了加密
Cookie: Idea-91e55ca=cbb05d5c-456c-4b90-991f-6bde7a7c9ca5
响应:
//响应行
HTTP/1.1 200 OK
//响应头
Accept-Ranges: bytes
ETag: W/"325-1605926271614"
Last-Modified: Sat, 21 Nov 2020 02:37:51 GMT
Content-Type: text/html
Content-Length: 325
Date: Sat, 21 Nov 2020 08:26:40 GMT
Keep-Alive: timeout=20
Connection: keep-alive
//响应体
<!DOCTYPE HTML>
<html>
<head>
<title>Submit Success.</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="Description" />
</head>
<body>
<h1>Submit Success!</h1>
<!-- content goes here -->
</body>
</html>
请求部分
- 请求行
- 请求方式
- get:请求的参数会显示在地址栏中(限制大小)
- post:请求的参数不会显示在请求体中(不限制大小)
- 请求路径
- 协议版本
- 请求方式
- 请求头
- 键值对(也可能一键对多值)
- 常用请求头
- Referer:代表网页的来源(防盗链)
- User-Agent:获得浏览器类型,以及系统信息
- 请求体
响应部分
-
响应行
- 协议版本
- 状态码
- 200:响应成功
- 302:需要进行重定向操作
- 304:需要用户查找本地缓存
- 404:请求资源不存在
- 500:服务器内部错误
- 状态码描述
-
响应头
- 键值对(也可能一键对多值)
- 常见响应头:
- Location:重定向的路径
- Refresh:定时刷新
- Content-Disposition:文件下载的时候使用
-
响应体
- 显示到浏览器的html代码
Q.E.D.