客户端<->服务端
1.客户端计算机:用于发送请求,来索要资源文件的计算机
2.服务端计算机:用于接收请求,并提供对应的资源文件计算机
C/S通信模型:
- C,client software:客户端软件
1)客户端软件专门安装在客户端计算机上
2)帮助客户端计算机向指定服务端计算机发送请求,索要资源文件
3)帮助客户端计算机将服务端计算机发送回来【二进制数据】解析为【文字,数字,图片,视频,命令】 - S , server software;服务器软件
1)服务器软件专门安装在服务端计算机上
2)服务器软件用于接收来自于特定的客户端软件发送请求
3)服务器软件在接收到请求之后自动的在服务端计算机上定位被访问的资源文件4)服务器软件自动的将定位的文件内容解析为【二进制数据】通过网络发送回发起请求的客户端软件上
适用场景:C/S通信模型普遍用于个人娱乐市场,比如【微信,淘宝/京东,视频(优酷/B站)】等;
企业办公则相对较少
优缺点:
- 优点:
1.安全性较高
2.有效降低服务端计算机工作压力(一部分压力由客户端承担) - 缺点:
1.增加客户获得服务的成本(客户端承担过多,硬件可能跟不上,需要更新换代)
B/S通信模型
B:browser,浏览器
1)浏览器安装在客户端计算机软件
2)可以向任意服务器发送请求,索要资源文件3)可以将服务器返回的【二进制数据】解析为
【文字,数字,图片,视频,命令】
S : server software服务器软件
1)服务器软件专门安装在服务端计算机上
2)可以接收任意浏览器发送请求
3)自动的在服务端计算机上定位被访问的资源文件
4)自动的将定位的资源文件内容以二进制形式发送回发起请求浏览器上
适用场景:既适用于个人娱乐市场,又广泛适用于企业日常活动
优缺点:
- 优点:
1.不会增加用户获得服务的成本
2.几乎不需要更新浏览器 - 缺点:
1.几乎无法有效对服务端计算机资源文件进行保护
2.服务端计算机工作压力异常巨大-----》【B/s通信下高并发解决方案】(一个服务器对多个客户端,跟不上高并发)
可以通过网络进行传输的文件,都被称为共享资源文件
所有的文件内容都可以通过网络传输,所有文件都是共享资源文件
Http服务器下对于共享资源文件分类
- 静态资源文件
1)如果文件内容是固定,这种文件可以被称为【静态资源文件】(文档,图片,视颊)
2)如果文件存放不是内容而是命令,这些命令只能在浏览器编译与执行
这种文件可以被称为【静态资源文件】( .html ,.css,.js) - 动态资源文件
如果文件存放命令,并且命令不能在浏览器编译与执行;只能在服务端计算机编译执行,这样的文件可以被称为【动态资源文件】( .class) - 静态资源文件与动态资源文件调用区别
静态文件被索要时,Http服务器直接通过【输出流】将静态文件中内容或则命令以【二进制形式】推送给发起请求浏览器
动态文件被索要时,Http服务器需要创建当前class文件的实例对象,通过实例对象调用对应的方法处理用户请求,通过【输出流】将运行结果以【二进制形式】推送给发起请求浏览器
程序员在网络通信中需要:
客户端计算机:
控制浏览器请求行为【三要素】
1.控制浏览器发送的请求地址:
- 超链接标签命令
- 表单标签命令<form action=">
- 地址栏
⒉控制浏览器发送请求方式(主要考虑get和post)
超链接标签命令执行,必须采用get
表单执行时,通过method设置是get还是post(默认是get)
- get:要求浏览器发送请求时,携带的【请求参数数量】不能超过4K,必须在浏览器地址栏上将【请求参数信息】展示出来,必须将请求参数信息保存在Http请求协议包中【请求头】
且要求浏览器在接收到服务器返回的资源文件内容后,必须将资源文件内容保存在浏览器的缓存 - post 要求浏览器发送请求时,可以携带任意数量的【请求参数】,必须在浏览器地址栏上隐藏请求参数信息,必须将请求参数信息保存在Http请求协议包中【请求体】,禁止浏览器将服务器返回资源文件内容进行保存【阅后即焚】I
- 考虑到POST请求方式,用户可以将【病毒文件内容】发送到服务番上进仃攻击。因此绝大多数门户级网站拒绝接收POST请求,日常开发过程绝大多数请求都是GET
- 在某些特殊场景下必须使用POST
1)文件上传,必须使用POST
2)发起登录验证请求,必须使用POST
3)索要服务器中实时变化数据时(股票价格,车票数量。。。),必须采用POST
3.控制浏览器发送请求携带参数
- 浏览器发送请求时携带的请求参数来源:
1).通过超链接标签命令指定请求参数
2).通过表单域标签命令指定请求参数
3)其他方式不可行,即使是修改form后的action值,都传不走 - 浏览器发送请求时请求地址?请求参数名1=值1&请求参数名2=值2
- .表单域标签value属性默认值
1)大多数表单域标签value属性默认值是空字符串 userName=’’
2)对于radio与checkbox来说,value属性默认值’ on’字符串
控制浏览器接收结果行为
1.控制浏览器采用对应【编译器】将接收二进制数据解析为【文字,视频,图片,命令】
⒉控制浏览器将解析内容或则命令进行执行与展示(全局刷新展示/局部刷新展示)
3.控制用户与浏览器之问交流【js---->Jquery】
服务器计算机:
静态资源文件[前端工程师]
动态资源文件
http网络协议
- Http请求协议包:
在浏览器准备发送请求时,负责创建一个Http请求协议包
浏览器将请求信息以二进制形式保存在Http请求协议包各个空间由浏览器负责将Http请求协议包推送到指定服务端计算机 - Http响应协议包:
Http服务器在定位到被访问的资源文件之后。负责创建一个Http响应协议包
Http服务器将定位文件内容或则文件命令以二进制形式写入到Http响应协议包各个空间
由Http服务器负责将Http响应协议包推送回发起请求的浏览器上。
协议包内部结构
空间划分:
请求行[
url:请求地址
method:请求方式
]
请求头[
请求参数信息
]
空白行[
没内容,起到隔离作用
]
请求体[
请求参数信息[post]
]
请求体和空白行在浏览器中看不到
请求行:
请求头:
请求协议包内部空间示意图
响应协议包内部结构
状态行:【
Http状态码】status code部分
响应头【
content-type:指定浏览器采用对应编译器
对响应体二进制数据进行解析
】
content-type 给返回的文件类型
空白行【
隔离作用】响应体:[
可能被访问静态资源文件内容可能被访问的静态资源文件命令
可能被访问的动态资源文件运行结果**都是以二进制形式
]
Http服务器
Http服务器是服务器中一种,其行为与 Http 协议相关;
Http服务器可以接收来自于浏览器发送的Htp 请求协议包。并自动对Http 请求协议包内
容进行解析
解析后,自动定位被访问的文件。并将定位的文件内容写入到Http响应协议包中
最后,负责将Http响应协议包推送回发起请求的浏览器上
命令行中敲入
java -verbose
即可查看jdk装的位置
C:\Program Files\Java\jdk-15.0.1\lib\modules
java -verbose
我的电脑-属性-高级系统设置-环境变量-系统变量
添加变量 JAVA_HOME C:\Program Files\Java\jdk-15.0.1
再去找apache-tomcat-9.0.48的位置
同样的方法配置环境
命令行中
D:>cd\编程软件\apache-tomcat-9.0.48-windows-x64\apache-tomcat-9.0.48\bin
然后可以用startup命令或者是shutdown实现开关
模拟面试(课程中插入的)
复习重写与重载
重写: Override
方法覆盖发生在具有继承关系的父子之间
方法名、返回值、形参列表都相同
最好就复制粘贴原方法
访问权限可以更高不能更低
比如父类是protected,子类只能是protected和public,不能写private
如果父类的方法满足不了子类的需求,子类就把方法重写,实现方法覆盖
重写方法时,抛出的异常可以是父类异常的全集,子集,空集
重写方法时,返回值可以是父类型和子类型
但如果父类方法中返回的是子类型,那么子类方法不能返回父类型
private和final修饰的不能被重写
重载: 把功能相似的方法用同一个方法名统一起来
参数数量不同,类型不同,顺序不同,都是不同,但和返回值类型无关,和C++差不多
同函数重载
让方法在接收不同参数时实现不同功能
复习throw和throws
复习异常 1.throws
- 声明位置:方法名之后
public void test1() throws NullPointerExeption{ - 作用:通知开发人员当前方法在运行时,【有可能】抛出的异常
- 携带数据throws后面携带【异常类型】,一个throws后面可以携带多个异常类型
- 调用:当一个方法被throws修饰时,调用方法时必须考虑异常捕捉问题
2.throw :
- 声明位置:方法执行体
public void test1() {
throw new RuntimeException () ;
} - 作用:throw是一个命令,执行时抛出一个指定异常对象I
- 携带数据: throw后面携带【异常对象】,一个throw一次只能携带一个异常对象
- 当一个方法内部存在throw命令时,在调用时可以不考虑异常捕捉问题
复习接口和抽象类
复习接口和抽象类 1.接口:
- 是一种特殊类文件
- 作用:制定规则降低耦合度
- 使用规则:
接口中属性,默认都是静态常量属性
接口中方法都是抽象,如果需要定义具体方法实现,此时方法需要使用default修饰接口中方法访问权限不能是private
接口与接口之间可以实现多继承,但是接口之间不能相互实现接口中不存在构造方法
2.抽象类:
- 抽象类由abstract修饰
- 抽象类作用降低接口实现类与接口之间实现难度
- 使用规则:抽象类可以声明抽象方法,也可以生成具体方法抽象类声明抽象方法必须由子类进行重写
- 抽象类实现接口时,不需要对接口方法进行重写抽象类有构造方法,但是不能使用
IDEA管理Tomcat
原来我图方便,下载的是IDEA的免费版
发现不能配置JavaWeb 的东西
本来想找破解的,师兄告诉我用学校邮箱申请,可以免费用完整版
在官网上下载完整版,然后用学校的邮箱去注册信息,这样就可以免费激活一年的完整版了。
在IDEA里面配置
首先是File-Setting
找到Application Servers
添加Tomcat然后导入servlet包
然后再run-edit configuration添加Tomcat
这样就可以启动了
测试Tomcat配置
模拟一次互联网通信
1.在Tomcat安装地址/webapps文件夹,创建一个网站【myweb】
2.将一个静态资源文件添加到网站[陈奕迅.jpg]
3.启动tomcat
4.启动浏览器,命令浏览器向tomcat索要陈奕迅.jpg
URL格式:网络协议包://服务端计算机P地址:Http服务器端口号/网站名/资源文件名称
http://localhost:8080/MyWeb/陈奕迅.jpg
先启动Tomcat
键入地址
建立JAVAWEB项目
在MODULE下面添加框架,选择JAVAEE8
将图片导入该文件夹
注意在web下,不能再WEB-INF下
在IDEA中不启动Tomcat,找不到图片
启动Tomcat后就可以了
启动首先要配置
Run-Edit Configuration
找到Web工程
选中Debug
等待链接成功