互联网通信流程涉及技术
1、控制浏览器行为的技术:HTML、CSS、javascript
javascript的升级版是jQuery
2、控制硬盘上数据库行为的技术:MySQL数据库服务器管理使用,JDBC规范
JDBC以后的升级版是MyBatis
3、控制服务器端Java 行为的技术:Http服务器、Servlet、JSP
看看这个HTTP服务器是怎么工作的,他是怎么根据浏览器的请求来进行文件的调用的
在这个服务器所调用的文件里面,有一种特殊的文件,就是我们写的 JAVA 类,这个Java类在Http服务器中以某个接口的实现类的形式在。而这个接口,就是 Servlet 。看看我们怎么写一个Java类才能被Http服务器正常的调用。
Servlet 的升级版是 SpringMVC 框架
JSP技术:利用这个技术,我们可以知道怎么把某台计算机中JAVA类的运行结果交到远方的客户的浏览器中。他是一个输出,相当一个输出流
此外,JSP技术还会被后面的模板化技术替代
4、互联网通信流程中开发的规则:MVC
开发过程中我们会写很多Java类,他们各司其职,他们之间是谁调用谁,这都有个规则,这个规则就是MVC
5、贯穿项目------->在线考试管理系统
一个玩具板的项目,是编程生涯中的第一个项目,利用它来了解什么叫做互联网通信流程
互联网通信
什么是互联网通信
两台计算机通过网络实现文件共享的行为,就死互联网通信
互联网通信过程角色划分
- 客户端计算机:用于发送请求,来索要资源文件的计算机
- 服务端计算机:用于接收请求,并提供对应的资源文件的计算机
通信模型
C/S通信模型:
C端:Clientsoftware,客户端软件
- 客户端软件专门安装在客户端计算机上
- 帮助客户端计算机向指定服务器端计算机发送请求,索要资源文件
- 帮助客户端计算机将计算发送回来的二进制数据解析为【文字,视频,数字,图片,命令】
S端:Serversoftware
- 服务器软件专门安装在客户端计算机上
- 服务器软件用于接收来自特定的客户端软件发送的请求
- 服务器软件在接收到请求之后自动在服务器端计算机上单位被访问的资源文件
- 服务器软件自动的将单位的文件内容解析为【二进制数据】通过网络发送回给发起请求的客户端软件上
适用场景: C/S通信模型普遍用于个人娱乐市场,比如【微信,淘宝,京东,视频(优酷,B站)】,大型企业办公领域相对应用较少
优缺点:
优点:
安全性较高
有效降低服务端计算机工作压力
有着炫酷的界面
缺点:
增加客户获得服务的成本
更新较为繁琐
B/S通信模型:
B端:Browser,浏览器
- 浏览器安装在客户端计算机软件
- 可以向任意服务器发送请求,索要资源文件
- 可以将服务器返回的二进制数据,解析为【文字,数字,图片,视频,命令】
S端:Serversoftware,服务器软件
- 服务器软件专门安装在服务端计算机上
- 可以接收任意浏览器发送请求
- 自动的在服务端计算机上定位被访问的资源文件
- 自动将定位的资源文件内容以二进制形式发送会发起请求的浏览器上
适用场景:既适用于个人娱乐市场,又广泛适用于企业日常活动
优缺点:
优点:
不会增加用户获得服务的成本
几乎不需要更新浏览器
缺点:
几乎无法有效队服务器端计算机资源文件进行保护
服务端计算机工作压力非常巨大【B/S通信下高并发解决方案】
开发人员在互联网通信的职责
(图片无了)
(图片无了)
在客户端计算机中控制浏览器请求的行为
-
控制浏览器发送的请求地址
1、超链接标签命令:href
2、表单标签命令:form里的action,表单和超链接的区别是超链接没有携带用户数据的能力
控制浏览器发送请求的方式
浏览器可以选择请求的方式有七中,目前只考虑两种(get 和 post 请求)
GET请求方式向浏览器发送请求时:
- 携带的【请求参数数量】不能超过4K
- 必须在浏览器地址栏上将【请求参数信息】展示出来
- 必须将请求参数信息保存在HTTP请求协议包的【请求头中】(下个阶段学)
- 浏览器在接收到服务器返回的资源文件内容后,必须将资源文件内容保存在浏览器的缓存中
- 超链接的方式,一定是get请求
POST请求方式向浏览器发送请求时:
-
可以携带任意数量的【请求参数】,不限制4K
-
必须在浏览器地址栏上隐藏请求参数信息,如账号密码
-
必须将请求参数的信息保存在HTTP请求协议包中的【请求体中】(第四阶段学)
-
禁止浏览器将服务器返回的资源文件内容进行保存到缓存
实时变动的内容必须采用post请求方式,比如股票,这样子数据才会实时变动,而不是从缓存中拿出以往的数据。防止浏览器在第二次请求的过程中拿缓存的数据来忽悠我
请求方式适用场景(面试)
1、考虑到POST请求方式,用户可以将【病毒文件内容】发送到服务器上进行攻击,因此绝大多数门户级网站拒绝接收POST请求,日常开发过程绝大多数请求都是GET
2、在某些特殊场景下必须使用POST
- 文件上传
- 发起登陆验证请求
- 索要服务器中时刻变化的数据(股票价格,车票数量……)必须采用POST,防止第二次访问时浏览器拿缓存中的数据来忽悠我
控制浏览器发送请求的携带参数
请求参数的作用
比如用户通过浏览器访问服务器端计算机动态资源文件Students.class,
class Students{ public int add(int a,int b){ return a+b; } }Http服务器:Students stu = new Students(); stu.add(?,?) add方法运行时要实参,需要由用户通过浏览器以请求参数的方式提供。
浏览器发送请求时需要携带调用方法需要实参(请求参数)
例如:www.baidu.com?n1=100&n2=200 [ n1=100&n2=200 ] 就是浏览器发送请求的参数
请求参数的格式
浏览器发送请求时: 请求地址?请求参数名1=值1&请求参数名2=值2……
浏览器发送请求时携带的请求参数来源
1、通过超链接标签命令指定请求参数
< a href="www.baidu.com?username=jack&password=123">百度</ a>
这里的【username=jack&password=123】写死了
2、通过表单域标签命令指定请求参数
所有的表单域标签都有两个属性:name和value,name充当请求参数名,value充当值
用name来提交value
单选框、复选框的默认value值是on
-
(扩展HTML)
对于radio标签与checkbox标签来说,提交参数除了必须声明在form和必须有name属性以外,还得满足第三条件:那就是radio和checkbox必须在【被选中】的情况下才可以作为请求参数
-
参数提交题目
提问:浏览器在发送请求时,发送了多少个请求参数? <form action="http://www.baidu.com?age=123"> <input type="text" name="username"/><br> <input type="submit"/> </form>答案是一个,因为请求参数只能在:超链接标签命令、表单域标签命令,指定请求参数
超链接中<a 的 href> 表单域标签的<input 之类 的name和value>(表单域标签不止input,还有select,textarea。但从来没说过可以在form里面指定请求参数)
在客户端计算机中控制浏览器接收结果的行为
-
控制浏览器采用对应【编译器】将接收二进制数据解析为【图片,视频,图片,命令…】
-
控制浏览器将解析内容或者命令进行执行与展示
(全局刷新展示/局部刷新展示,都是下个阶段才学)
-
控制用户与浏览器之间的交流【从JS---->到 jQuery 】
在服务端计算机中
- 负责编写动态资源文件