web的概述
什么是web
什么是Javaweb
使用就java语言进行web开发
软件架构
- CS结构的软件
CS: Client/Server 客户端和服务器,这种软件往往需要安装。比如QQ、迅雷、播放器。
优缺点:
优点:
可以减轻服务器端压力,将部分代码写到客户端。
界面很美观。
缺点:
一旦服务器更新了,客户端也需要更新。
分布式开发比较弱。
- BS结构的软件
BS: Browser/Server 浏览器和服务器,这种软件不需要安装,只需要通过浏览器就可以访问。
优缺点:
优点:
服务器一旦更新,不需要更新客户端,因为客户端就是浏览器。
比较强的分布式能力。
缺点:
服务器端压力会比较大。
界面效果不如Cs结构软件。
现在的软件,一般都是朝着BS结构发展的。
web服务器
服务器:是硬件和软件的结合
硬件:其实就是一台电脑(这台电脑配置要求很高)。
软件:需要在这台电脑上安装web服务器的软件。
常见的web服务器
Tomcat: Apache组织提供的一个开源的免费的web服务器。满足EE的Servlet和JSP的规范。
WebSphere : IBM公司开发的一个收费的大型web服务器。满足了EE开发的所有规范。
Weblogic: BEA公司开发的一一个收费的大型web服务器。满足了EE开发的所有规范。
IIS:应用在.NET平台上。
Apache:应用在PHP平台上。
web开发中的资源
-
静态web资源:
HTML
CSS
JS -
动态web资源:
Servlet、JSP
PHP
ASP
Tomcat的概述及安装
什么是Tomcat
Tomcat是一个web服务器,可以用来发布web项目。
Tomcat的安装
Tomcat的安装注意事项
java环境变量的配置
Tomcat运行需要依赖Java 环境,也就是说需要在电脑上安装了JDK之后才可以安装和启动Tomcato因为Tomcat启动的时候需要使用JRE的环境。必须要配置JAVA_ HOME环境变量,如果没有配置JAVA_ HOME环境变量,那么服务器在启动的时候就会一闪然后关闭。
Tomcat端口冲突的问题
如果电脑上安装了一个应用之后,有可能会占用Tomcat的端口,如果将Tomcat端口占用了,同样这个Tomcat启动不了的。Tomcat默认的端口号是8080一般80端口容易被其他程序所占用。因为80端口是HTTP协议的默认端口(可以省略)。
解决办法:
Tomcat的目录结构
Tomcat项目发布
一-直接将项目复制到tomcat/webapps下
- 先创建一个项目,在项目中创建一个静态页面index.html
- 将项目复制到tomcat/webapps目录下
- 然后启动Tomcat
在bin目录下启动
- 在浏览器访问:http://localhost:8080/aaa/index.html
二-在tomcat/conf/server.xml配置tomcat的虚拟路径。
虚拟路径:配置一个名称与一个真实的路径进行绑定,然后访问这个名称从而找到真实路径。
此方法并不推荐使用,推荐使用第三种方法。
- 先创建一个项目,在项目中创建一个静态页面index.html,这个项目可以在磁盘中的任何位置。
我的位置是在D:\bbb
- 配置虚拟路径
在conf\server.xml文件中的< Host > 标签中,添加一个< Context >标签,在< Context >标签中添加path属性和docBase。
path设置虚拟路径,docBase设置真实路径。
- 然后启动Tomcat
在bin目录下启动
- 浏览器访问:http://localhost:8080/wxw/index.html
三-在tomcat/conf/Catalina/localhost/下配置tomcat的虚拟路径。
第三种方式也需要配置虚拟路径,第二种需要修改server.xml。
server.xml是tomcat的核心配置文件,一旦修改错了 ,那么tomcat服务器就会出现问题,推荐使用第三种配置方式。
- 先创建一个项目,在项目中创建一个静态页面index.html,这个项目可以在磁盘中的任何位置。
我的位置是在D:\ccc
- 创建一个xml(在conf\Catalina\localhost)
- 设置虚拟路径
编辑wxw.xml
文件的名称就是虚拟路径(lol), 只需要访问lol就可以访问D:\ccc这个路径。 - 启动Tomcat,访问项目
在bin目录下启动
http://localhost:8080/lol/index.html
Eclipse中集成Tomcat
Tomcat虚拟主机的配置之网站访问的过程
访问一个网页的全过程详解
一级域名和二级域名的区别
hosts文件
DNS服务器:
DNS服务器也叫域名解析器,而域名和IP地址是呈键值对形式的。
什么是DNS解析?当用户输入一个网址并按下回车键的时候,浏览器得到了一个域名。而在实际通信过程中,我们需要的是一个IP地址。因此我们需要先把域名转换成相应的IP地址,这个过程称作DNS解析。
DNS服务器在哪?
本地域名服务器应该是大型单位或当地的网络运营商拥有;主域名服务器应该归网通、电信这种等级的主干运营商或政府所有;至源于全球的13组根域名服务器,1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲知2个,位于英国道和瑞典,亚洲1个,位于日本,由互联网域名与号码分配机构ICANN统一管理。
Tomcat虚拟主机的配置之虚拟主机的配置
虚拟主机的概述
虚拟主机:在电脑上设置一个目录(真实目录), 使用一个名称与该目录进行绑定。这个名称路径称为是虚拟主机。主机是可以发布web项目的。
虚拟主机的配置
1. 抓取百度的页面
访问百度官网baidu.com,然后另存为。
也可以是一个web项目。
2. 创建一个路径(虚拟主机)
这里的baidu是虚拟主机的目录, website 是项目名称,将抓取的百度页面放入其中。
3. 配置Tomcat的虚拟主机
在conf\server.xml中配置虚拟主机,复制一段 < Host >标签然后将name和AppBase属性更改。
4. 修改本地hosts文件
Windows本地hosts文件位置:C:\Windows\System32\drivers\etc\hosts
首先要知道自己本地的IP地址
在cmd中输入ipconfig /all
在hosts文件中添加,本机的IP地址和域名
启动服务器访问项目
https://www.baidu.com:8080/website/baidu.html
这里显示此站点不安全是因为我使用的http协议会过滤没有ssl证书的网站。
Tomcat配置SSL证书
访问时还要输入:8080/website/baidu.html,真正的是百度是不需要输入这些的,那就把这些去掉。
修改端口号
HTTP、HTTPS常用的默认端口号
将Tomcat的conf\server.xml的8080修改为443,这样就不用输入8080了,因为443是https默认的端口号。
将路径中的项目名去掉
在< Host >中添加< Context >,并添加属性path和docBase
配置默认首页
在Tomcat的conf\web.xml中最下面添加默认首页
全部三项都修改和添加完后就可以直接使用www.baidu.com访问了。
HTTP协议的概述
什么是http协议
http协议详解
HTTP与HTTPS的区别,详细介绍
HTTP协议:规定了浏览器和服务器端的数据交互的格式。
浏览器向服务器传输什么样格式的数据服务器可以接受,服务器给浏览器回什么样的格式的数据,浏览器可以把它显示,这些都是http协议规定的。
http的特性
- 基于请求和响应模型
必须要先有请求,后有响应
请求和响应必须成对出现 - 简单快捷
因为发送请求的时候只需要发送请求方式和请求路径即可
http的版本
http协议的抓包分析
创建页面:
demo1
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>demo1</h1>
<form action="demo2.html">
姓名:<input type="text" name="name"><br/>
性别:<input type="text" name="name"><br/>
<input type="submit" value="提交">
</form>
</body>
</html>
demo2
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>提交成功</h1>
</body>
</html>
请求部分:
****get方式提交
GET /web_test/demo2.html?name=zhangsan&name=man HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36 Edg/81.0.416.58
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/web_test/demo1.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-1bf988ba=ad8b0c71-b8ea-42c6-a73a-d5125a46da80; _ga=GA1.1.254690400.1585889179
****post方式提交
POST /web_test/demo2.html HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 22
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/81.0.4044.113 Safari/537.36 Edg/81.0.416.58
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/web_test/demo1.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-1bf988ba=ad8b0c71-b8ea-42c6-a73a-d5125a46da80; _ga=GA1.1.254690400.1585889179
name=zhangsan&name=man
响应部分:
HTTP/1.1 200
Accept-Ranges: bytes
ETag: W/"148-1587308754990"
Last-Modified: Sun, 19 Apr 2020 15:05:54 GMT
Content-Type: text/html
Content-Length: 148
Date: Sun, 19 Apr 2020 15:23:08 GMT
Keep-Alive: timeout=20
Connection: keep-alive
http协议之请求部分
请求部分可以分成三块
- 请求行
请求方式
请求方式有很多种,常用就两种GET和POST
GET和POST的区别?
GET:请求的参数会显示到地址栏。通常是有大小的限制。没有请求体
POST:请求的参数不会显示到地址栏(在请求体中)。POST没有大小的限制。有请求体(请求参数)。
请求路径
协议版本
- 请求头
请求头的格式一般都是一个 key对应一个 value的,也有一个key对应多个value的情况。
记住一些请求头:
Referer,: 代表网页的来源。(防盗链)。
User-Agent: 获得客户端浏览器类型。
5. 请求体
只有POST请求方式才有请求体,而且请求体是POST方式请求参数。
http协议之响应部分
响应部分分成三块内容
- 响应行
协议版本
状态码
200:代表响应成功
302:需要进行重定向操作
304:需要查找本地缓存
404:请求资源不存在
500:服务器内部错误
状态码描述 - 响应头
响应头的格式一般都是一个key对应一个 value的,也有一个key对应多个value的情况。
记住响应头:
Location :重定向的路径。
Refresh : 定时刷新。
Content-Disposition:文件下载的时候使用。
3. 响应体
就是显示到浏览器页面的代码