web开发基础
C/S架构
服务器-客户机,即Client-Server(C/S)结构。C/S结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。
例如我们需要下载QQ、微信、电脑版吃鸡,如果该客户端软件需要升级,用户需要重新下载最新版本的客户端下载安装。
C(客户端Client)/S(Server)架构
C(客户端Client)/S(Server)架构 桌面应用程序
java swing 、 c#
下载对应的安装包
安装成功之后
才可以使用
B/S架构
什么是web开发
Web:全球广域网,也称为万维网(www),也就是能够通过浏览器访问的网站
例如 通过浏览器访问 www.mayikt.com 、www.baidu.com、www.taobao.com。
JavaWeb开发:是使用java技术栈开发Web项目。
什么是B/S架构
B/S架构的全称为Browser/Server,即浏览器/服务器结构,Browser指的是Web浏览器
它的特点是 客户端只需要安装浏览器,应用程序的逻辑和数据都存放在服务器端共享访问。
优点:易于维护升级:服务器端升级后,客户端(浏览器端无需升级)就获取最新的版本
静态web资源(如html 页面、js、css、images):指web页面中供人们浏览的数据始终是不变。
动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
静态web资源开发技术:Html js、css、images
常用动态web资源开发技术:JSP/Servlet、ASP、PHP等
在Java中,动态web资源开发技术统称为Javaweb。
缺点
B/S体系架构的软件 版本升级的时候 客户端是无需升级的 只需要重新刷新网页即可。
缺陷:会占用服务器端带宽资源。
Http协议原理
Http请求格式
请求数据格式:
1.请求行 请求方法(get、post)、url (/首页) http协议版本1.1版本 请求第一行
GET /front/showcoulist HTTP/1.1
2.请求头 (键值对的形式)
Host: www.mayikt.com 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/92.0.4515.159 Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://www.mayikt.com/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: __yjs_duid=1_92c8557b9791d34466e53ea75410e2c01649305342102; JSESSIONID=B303350E58BA0F1230E0B66A9ADCD35F; Hm_lvt_eaa952b8610db6f155ab0febd442e89a=1649305345,1649313679; Hm_lpvt_eaa952b8610db6f155ab0febd442e89a=1649316541
3.请求体
1.请求行:请求数据第一行
1.1由3部分组成,分别为:请求方法、URL 以及协议版本,之间由空格分隔
1.2请求方法包括GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE以及扩展方法,当然并不是所有的服务器都实现了所有的方法,部分方法即便支持,处于安全性的考虑也是不可用的
1.3协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1
2.请求头:
第二行开始,格式 key:value形式
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Log, X-Reqid
Access-Control-Max-Age: 2592000
常见http协议请求头
Host:接受请求的服务器地址,可以是IP:端口号,也可以是域名
User-Agent:发送请求的应用程序名称
Connection:指定与连接相关的属性,如Connection:Keep-Alive
Accept-Charset:通知服务端可以发送的编码格式
Accept-Encoding:通知服务端可以发送的数据压缩格式
Accept-Language:通知服务端可以发送的语言
3.请求体:
post请求的最后一部分,存放发送请求的参数
userName=mayikt&age=26
get与post请求区别
1.get请求请求的参数在请求行中,没有请求体;
2.post请求请求参数在请求体中;
3.get请求请求参数有大小限制,post请求没有
Http响应格式
响应格式分为3个部分
1.响应行:响应数据第一行 http协议版本1.1版本 HTTP/1.1 200
200表示响应状态码 ok为 成功状态
2.响应头:第二行开始 格式 key value
Location: http://www.baidu.com(服务端需要客户端访问的页面路径)
Server:apache tomcat(服务端的Web服务端名)
Content-Encoding: gzip(服务端能够发送压缩编码类型)
Content-Length: 80(服务端发送的压缩数据的长度)
Content-Language: zh-cn(服务端发送的语言类型)
Content-Type: text/html; charset=GB2312(服务端发送的类型及采用的编码方式)
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服务端对该资源最后修改的时间)
Refresh: 1;url=http://www.mayikt.com(服务端要求客户端1秒钟后,刷新,然后访问指定的页面路径)
Content-Disposition: attachment; filename=aaa.zip(服务端要求客户端以下载文件的方式打开该文件)
Transfer-Encoding: chunked(分块传递数据到客户端)
Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服务端发送到客户端的暂存数据)
Expires: date(Cache-Control过期时间)
Cache-Control: no-cache(服务端禁止客户端缓存页面数据) max-age=xx(通知浏览器:xx秒之内别来烦我,自己从缓冲区中刷新)
Pragma: no-***(服务端禁止客户端缓存页面数据)
Connection: close(1.0)/(1.1)Keep-Alive(维护客户端和服务端的连接关系)
Date: Tue, 11 Jul 2000 18:23:51 GMT(服务端响应客户端的时间)
服务器端响应结果给客户端类型:(Content-Type)
1.text/html;charset=UTF-8
2.image类型
3.响应体 存放服务器响应给客户端的内容
socket
概述
1、计算机网络是通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统。网络编程就就是编写程序使联网的两个(或多个)设备(例如计算机)之间进行数据传输。Java语言对网络编程提供了良好的支持,通过其提供的接口我们可以很方便地进行网络编程。例如我们的QQ聊天
2、Java是 Internet 上的语言,它从语言级上提供了对网络应用程 序的支持,程序员能够很容易开发常见的网络应用程序。
3、Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制。并 且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。
网络通讯三要素
IP地址
端口号
协议
1、我们需要知道的是主机间通过网络进行通信是需要遵循网络通信协议,是通过IP地址准确定位主机,通过端口号准确定位主机上的应用,例如IP地址和端口号 192.168.110.1:80
2、如何实现网络中的主机互相通信?
① 通信双方地址:IP和端口号
② 一定的规则协议。 tcp或者udp
IP地址准确定位主机
1.IP 地址:InetAddress(在Java中使用InetAddress类代表IP)
一的标识 Internet 上的计算机(通信实体)
2.本地回环地址(hostAddress):127.0.0.1 主机名(hostName):localhost
3.IP地址分类方式1:IPV4 和 IPV6
3.1 IPV4:4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿。2011年初已 经用尽。以点分十进制表示,如192.168.0.1
3.2 IPV6:128位(16个字节),写成8个无符号整数,每个整数用四个十六进制位表示, 数之间用冒号(:)分开