目录
前言
JavaWeb,是用Java技术来解决相关web互联网领域的技术的总称。web包括:web服务器和web客户端两部分。Java在服务器端的应用非常丰富,比如Servlet,JSP和第三方框架等等。我们可以通过 JavaWeb 来制作一个软件、网页、游戏等。学习JavaWeb,需要学习以下的技术:
1.控制浏览器行为技术: HTML ,CSS ,JavaScript
2.控制硬盘上数据库行为技术:MySql数据库,JDBC
3.控制服务端Java行为技术: Http服务器,Servlet,JSP
4.互联网通信流程开发规则: MVC
JavaWeb开发是基于开发和响应的
请求:浏览器(客户端)向服务器发送信息
响应:服务器向(客户端)浏览器回送信息
一、 互联网通信流程
1. 什么是互联网通信?
两台计算机通过网络实现文件共享行为,就是互联网通信.
2. 互联网通信过程中的角色划分
1.客户端计算机:用于发送请求,来索要资源文件的计算机.
2.服务端计算机:用于接收请求,并提供对应的资源文件计算机
3. 互联网通信模型
C/S架构
C 为 Client software,意为客户端软件
1)客户端软件专门安装在客户端计算机上
2)帮助客户端计算机向指定服务端计算机发送请求,索要资源文件
3)帮助客户端计算机将服务端计算机发送回来二进制数据,解析为文字,数字,图片,视频,命令
S 为 Server software,意为服务器软件
1)服务器软件专门安装在服务端计算机上
2)服务器软件用于接收来自于特定的客户端软件发送请求
3)服务器软件在接收到请求之后自动的在服务端计算机上定位被访问的资源文件
4)服务器软件自动的将定位的文件内容解析为二进制数据通过网络发送回,发起请求的客户端软件上
适用场景
C/S通信模型普遍用于个人娱乐市场,比如微信,淘宝/京东,视频,大型网络游戏等,企业办公领域相对应用较少
C/S架构的优缺点
优点:
- 安全性较高
- 有效降低服务端计算机工作压力
缺点:
- 增加客户获得服务的成本
- 更新较为繁琐
B/S架构
B, 即为browser,意为浏览器
- 浏览器安装在客户端计算机软件
- 可以向任意服务器发送请求,索要资源文件
- 可以将服务器返回的二进制数据,解析为文字,数字,图片,视频,命令等
S,为Server
服务器软件
- 服务器软件专门安装在服务端计算机上
- 可以接收任意浏览器发送请求
- 自动的在服务端计算机上定位被访问的资源文件
- 自动的将定位的资源文件内容以二进制形式发送回发起请求浏览器上
适用场景:
既适用于个人娱乐市场,又广泛适用于企业日常活动
B\S架构的优缺点
优点:
- 不会增加用户获得服务的成本
- 几乎不需要更新浏览器
缺点:
- 几乎无法有效对服务端计算机资源文件进行保护
- 服务端计算机工作压力异常巨大 -----> B/S通信下高并发解决方案
4. 共享资源文件
定义
可以通过网络进行传输的文件,都被称为共享资源文件
所有的文件内容都可以通过网络传输,所有文件都是共享资源文件
Http服务器下共享资源的分类
- 静态资源文件
- 动态资源文件
静态资源文件
- 如果文件内容是固定,这种文件可以被称为静态资源文件,如文档,图片,视频
- 如果文件存放不是内容而是命令,这些命令只能在浏览器编译与执行,这种文件可以被称为静态资源文件,如以.html,.css,.js结尾的文件
动态资源文件
如果文件存放命令,并且命令不能在浏览器编译与执行,只能在服务端计算机编译执行,这样的文件可以被称为动态资源文件,例如.class文件
静态资源文件与动态资源文件的区别
静态文件被索要时,Http服务器直接通过输出流,将静态文件中内容或则命令以二进制形式推送给发起请求浏览器
动态文件被索要时,Http服务器需要创建当前class文件的实例对象,通过实例对象调用对应的方法处理用户请求,通过输出流将运行结果以二进制形式推送给发起请求浏览器
伪代码:
class operator_cal {
public int add(int n1, int n2) {
int sum = n1 + n2;
return sum;
}
}
Http服务器(自动):
operator_cal cal = new operator_cal();
int result = cal.add(10, 20);
out.print(result);
5. 开发人员在互联网通信流程担负的职责
互联网通信流程图如下:
开发人员在互联网通信流程担负的职责为:
-
控制浏览器行为
-
开发动态资源文件来解决用户请求
那么如何控制浏览器的请求行为?
浏览器的请求行为分三个方面:
1. 请求地址 2. 请求方式 3. 请求携带参数
1. 控制浏览器发送的请求地址
(1)超链接标签命令:
<a href = "请求地址"> 提示信息 </a>
(2)表单标签命令:
<form action="请求地址">
<input type = "submit">//提交按钮
</form>
2. 控制浏览器发送请求方式
(1) 请求方式:决定浏览器在发送请求时行为特征
(2) 可供选择的请求方式: 7种, 目前只考虑 POST请求方式 和 GET请求方式
(3) GET请求方式:
1) 要求浏览器发送请求时,携带的【请求参数数量】不能超过4K
2) 要求浏览器发送请求时,必须在浏览器地址栏上将【请求参数信息】展示出来
3) 要求浏览器发送请求时,必须将请求参数信息保存在Http请求协议包【请求头】
4) 要求浏览器在接收到服务器返回的资源文件内容后,必须将资源文件内容保存在浏览器的缓存
(4) POST请求方式:
1)要求浏览器发送请求时,可以携带任意数量的【请求参数】
2)要求浏览器发送请求时,必须在浏览器地址栏上隐藏请求参数信息
3)要求浏览器发送请求时,必须将请求参数信息保存在Http请求协议包中【请求体】
4)禁止浏览器将服务器返回资源文件内容进行保存
(5) 控制浏览器发送请求时采用的请求方式
<form action="请求地址" method="get"/>//method的默认值是get
<form action="请求地址" method="post"/>//表单域命令可以用method属性来改变请求方式
<a href="请求地址"> </a> //超链接标签命令在执行时,要求浏览器必须采用GET方式发送请求
(6) 请求方式的适用场景
1) 考虑到POST请求方式, 用户可以将【病毒文件】发送到服务器上进行攻击. 因此绝大多数门户级网站拒绝接收POST请求, 日常开发过程绝大多数请求都是GET.
2) 在某些特殊场景下必须使用POST:
1.文件上传
2.发起登录验证请求
3.索要服务器中实时变化数据
3. 控制浏览器发送请求携带参数
(1) 请求参数作用:
用户通过浏览器访问服务端计算机动态资源文件时, 浏览器自动创建资源文件的实例对象,自动调用相关方法,在调用方法时可能需要实参,这些实参即为请求参数传递过来的
(2) 请求参数格式:
浏览器发送请求时 请求地址?请求参数名1=值1&请求参数名2=值2
(3) 浏览器发送请求时携带的请求参数来源:
1)通过超链接标签命令指定请求参数
<a href = "http://www.baidu.com?userName=mike&password=111">百度</a>
2)通过表单域标签命令指定请求参数
1. 表单域标签分类
<input />
<select></select>
<textarea></textarea>
2.所有的表单域标签都拥有两个属性name,value. 请求name属性声明请求参数名,value属性声明请求参数内容
<form action = "http://www.baidu.com">
<input type = "text" name = "userName" value = "mike"/>
<input type = "text" name = "password" value = "111"/>
<input type = "submit">
</form>
3.表单域标签value属性默认值
①大多数表单域标签value属性默认值是空字符串 userName=''
②对于radio与checkbox来说,value属性默认值'on' (开启)
4.表单域标签作为请求参数条件
大多数标签:①定义在<form></form>内
②声明name属性
对于radio标签与checkbox标签来说在满足上述两个条件同时,还必须满足radio与checkbox必须在【被选中】的情况下, 才可以作为请求参数
如果表单域标签使用disabled来修饰时,失去作为请求参数条件
表单域标签:readOnly 与 disabled 区别
readOnly:要求当前标签中value属性只能看但是不能被修改,readOnly不会影响表单域标签作为请求参数条件
disabled:设置当前标签为不可用状态,此时标签中value属性内容不能被修的disabled修饰的表单域标签是永远都不能作为请求参数
<input type="text" name="name" value="xxx" disabled />
<input type="text" name="name" value="xxx" readonly />
二、Http网络协议
1. 网络协议包
1.在网络中传递信息都是以【二进制】形式存在的。
2.接收方【浏览器/服务器】在接收信息后,要做第一件事就是将【二进制数据】
进行编译【文字,图片,视频,命令】
3.传递信息数据量往往比较巨大,导致接收方很难在一组连续的二进制得到对应数据。比如,浏览器发送一个请求: http://192.168.100.2:8080/index.html ,这个请求信息以二进制形式发送01010101010110101010101101010 ,Http服务器很难从二进制数据得到相关信息
4.网络协议包一组有规律二进制数据,在这组数据存在了固定空间 每一个空间专门存放特定信息,这样接收方在接收网络协议包之后就可以到固定空间得到对应信息,网络协议包出现极大降低了接收方对接收二进制数据编译难度
【0000(ip地址)0000(端口号)0000(资源文件名)0000】
2. 常见网络协议的分类
(1) FTP网络协议包
(2) Http网络协议包
3. Http网络协议包
在基于B/S结构下互联网通信过程中,所有在网络中传递信息都是保存在Http网络协议包中的。
Http网络协议包的分类:
- Http请求协议包:
在浏览器准备发送请求时,负责创建一个Http请求协议包 浏览器将请求信息以二进制形式保存在Http请求协议包各个空间,由浏览器负责将Http请求协议包推送到指定服务端计算机 - Http响应协议包:
Http服务器在定位到被访问的资源文件之后。负责创建一个Http响应协议包,Http服务器将定位文件内容或则文件命令以二进制形式写入到Http响应协议包各个空间。由Http服务器负责将Http响应协议包推送回发起请求的浏览器上。
Http请求协议包的内部结构:
请求行:[
url:请求地址
method:请求方式(POST/GET)
]
请求头:[
请求参数信息【GET】
]
空白行:[
起隔离作用
]
请求体:[
请求参数信息【POST】
]
Http响应协议包内部结构
状态行: [
Http状态码
]
响应头:[
content-type: 指定浏览器采用对应编译器,对响应体的二进制数据进行解析
]
空白行:[
起隔离作用
]
响应体:[
可能被访问静态资源文件内容
可能被访问静态资源文件命令
可能被访问动态资源文件运行结果
]