一. 网络协议包:
在互联网通信过程中, 网络传输资源都是二进制形式的, 接收方需要在接收完毕后一次性解析完毕.但是因为传递信息数量庞大, 增加了接收方解析难度, 所以用到了网络协议包
网络协议包: 一组有规律的二进制数据, 网络协议包中内置了固定空间, 固定空间专门用来存放指定资源, 降低接收方解析难度.
Http网络协议包是B/S通讯结构唯一的网络协议包,在B/S通讯结构中所有的请求和接受数据都是用过Http网络协议包进行传递的.
二. Http网络协议包分类:
1. Http请求协议包:
1) 在浏览器准备发送请求时,负责生成一个Http请求协议包
2) 在浏览器准备发送请求时,负责将请求信息写入Http请求协议包
3)由浏览器负责推送Http请求协议包。
2. Http响应协议包:
1)在Http服务器准备返回结果时,负责生成Http响应接协议包
2) 由Http服务调用输出流将文件内容(文字,数字,像素,帧,命令)以二进制的方式写入到Http响应协议包.
3) 有Http服务器负责将Http相应协议包推送到请求的浏览器.
Http请求协议包内部结构:自上而下分为四层结构(牢背):
1.请求行{
url:请求地址
method:请求方式
}
2. 请求头{
如果浏以GET方法发送请求
请求参数存放在请求头
}
3. 空白行{
什么都没有,用来隔离请求头和请求体
}
4. 请求体{
如果浏览器以POST方法发送请求
请求参数存放在请求体
}
Http响应协议包内部结构:自上而下分为四层结构(牢背):
1. 状态行{
Http状态码
}
2. 响应头{
contect-type:制定浏览器使用对应解析器或编译器对返回的二进制数进行解析数据
}
3.空白行{
}
4. 响应体{
本次索要文件内容(二进制形式存放)}
三. Http服务器介绍:
1. 所有的Http服务器都是由java编程语言开发应用程序.
2. Http服务器可以接收有浏览器发动的Http请求协议包
3. Http服务器可以解析Http请求协议包的二进制数据了解用户请求
4. Http服务器可以自动定位被访问的资源文件
5.Http服务器可以可以自动将被访问的文件内容或者文件运行结果通过输出流以二进制的形式写入到Http响应协议包中的响应体中.
6. Http服务器可以自动将Http响应协议包发回请求的浏览器.
四. Http服务器分类:
1. 功能性最强--- Websphere, 用于电商等性能强大的平台服务器,多用于linux系统.
2. 功能最新--- GlassFish
3. 最轻量级的---tomcat, 也是本次学习的重点
五. tomcat服务器启动与关闭:
1. tmcat服务器启动时生成一个管理对象.如果手动关闭, 时间一长这个管理对象将脱离管理, 导致无法再次启动tomcat.
2. 管理命令为止: timcat安装地址/bin文件夹下
3. 启动tomcat命令: startup
4. 关闭tomcat命令: shutdown
六. tomcat服务器启动失败的原因:
1. JAVA_HOME忘记配置
2. JAVA_HOME地址填写错误
3. CATALINA_HOME地址填写错了
4. tomcat对其默认端口号8080. 一个计算机只能启动一个tomcat
七. tomcat服务器工作文件:
1.bin: tomcat 管理命令
2.conf: tomcat配置文件. server.xml是tomcat核心配置文件
3.lib: tomcat应用程序在运行时雨来的第三方jar.
4.logs: 存放tomcat运行日志
5.temp: 存放tomcat运行时生成临时文件
6.webapps: tomcat在默认情况下, 接收到请求之后到webapps下定位资源文件
7.work: tomcat在默认情况下, 在work文件下将jsp文件编辑为java文件并编译为class文件
八.模拟tomcat调用动态资源文件:
1. 对于网站来说,tomcat只能调用网站中Servlet接口实现类
2. Tomcat接收到请求之后, 根据url中文件名称定位被访问Servlet接口实现类:
1) Tomcat通过Class.forName方法将硬盘类文件加载到内存
2) Tomcat通过反射机制通知JVM创建当前类的实例对象
3) Tomcat通过实例对象调用init方法来实现对实例对象初始化操作
4) Tomcat通过实例对象调用service方法处理当前用户请求
5) Tomcat通过输出流将srvice方法处理结果写入到响应体交还给七扭去浏览器
九. 配使器设计模式
1.作用: 降低接口实现类开发难度的. 可以让接口实现类自由选择接口中的方法重写.
2.解决方案:
1) 使用抽象类实现接口, 对接口中不受欢迎(不常用)的抽象方法进行空实现
2) 创建接口实现类 , 继承于抽象类, 此时接口实现类开发时只需要重写需要的方法