一、概述
- 概念:两台计算机设备通过网络实现文件共享行为
- 角色划分:
- 客户端计算机:用于发送请求,来索要资源文件的计算机
- 服务端计算机:用于接收请求,并提供对应的资源文件的计算机
- 互联网通信模型:
- C/S通信模型:
- C:Client Software(客户端软件)
- ①客户端软件专门安装在客户端计算机上;
- ②帮助客户端计算机向指定服务端计算机发送请求,索要资源文件;
- ③帮助客户端计算机将服务端计算机发送回来的二进制数据(网络中只有电磁信号流动,只能描述高低电平)解析为文字、数字、图片、视频、命令
- S:Server software(服务器软件)
- ①服务器软件专门安装在服务端计算机上
- ②服务器软件用于接收来自于特定的客户端软件发送的请求
- ③服务器软件在接收到请求之后自动的在服务端计算机上定位被访问的资源文件
- ④服务器软件自动的将定位的文件内容解析为二进制数据并通过网络发送回发起请求的客户端软件
- 适用场景:C/S通信模型普遍用于个人娱乐市场,如微信、淘宝、京东、视频平台、大型网络游戏,企业办公领域相对应用较少。
- 优点:
- ①安全性较高
- ②有效降低服务端计算机工作压力,将大部分命令置于客户端中运行
- ③速度快,体验好,界面炫酷
- 缺点:
- ①升级麻烦,维护成本较高,增加客户获得服务的成本
- ②更新较为繁琐
- C:Client Software(客户端软件)
- B/S通信模型:
- B:Browser(浏览器)
- ①浏览器安装在客户端计算机上的一个软件
- ②可以向任意服务器发送请求,索要资源文件
- ③可以将服务器返回的二进制数据解析为文字、数字、图片、视频、命令
- S:Server software(服务器软件)
- ①服务器软件专门安装在服务端计算机上
- ②可以接收任意浏览器发送请求
- ③自动的在服务端计算机上定位被访问的资源文件
- ④自动的将定位的资源文件以二进制形式发送回发起请求浏览器上
- 适用场景:既适用于个人娱乐市场,又广泛适用于企业、银行、政府机关单位内部办公日用系统,注重对数据的增删改查,以及低维护成本
- 优点:
- ①不会增加用户获取服务的成本
- ②几乎不需要更新浏览器
- ③升级方便,只升级服务器代码即可,维护成本低
- 缺点:
- ①几乎无法有效对服务端计算机资源文件进行保护
- ②服务端计算机工作压力异常巨大(如何解决高并发(多线程解决方案))
- ③速度慢,体验不好,界面不炫酷
- B:Browser(浏览器)
- C/S通信模型:
- 共享资源文件:
- 定义:可以通过网络进行传输的文件内容,都被称为共享资源文件
- Http服务器下对于共享资源文件分类:
- 静态资源文件:文件内容固定,如文档、图片、视频、命令(html、css、javascript)(只能在浏览器编译与执行)
- 动态资源文件:文件存放命令,并且命令不能再浏览器编译与执行,只能在服务端计算机编译执行,如class文件
- 静态资源文件与动态资源文件调用区别:
- 静态文件被索要时,http服务器直接通过输出流将静态文件中的内容或命令以二进制形式推送给发起请求浏览器
- 动态文件被索要时,http服务器需要创建当前class文件的实例对象,通过实例对象调用对应的方法处理用户请求,通过输出流将运行结果以二进制形式推送给发起请求的浏览器
- 后端开发人员工作:
- 控制浏览器行为
- 开发动态资源文件来解决用户请求
二、HTTP协议
-
网络协议包(类似快递):指一组有规律的二进制数据,这组数据存在了固定空间,每一个空间专门用于存放特定信息,使得接收方在接收到网络协议包后,可以在固定空间得到对应信息,网络协议包出现极大降低了接收方对接收二进制数据编译的难度。
- 在网络中传递信息都是以二进制形式存在的
- 接收方(浏览器/服务器)在接收信息后,会将二进制数据编译成文字、图片、视频、命令
- 传递信息数据量通常较大,导致接收方难以在一组连续二进制得到对应数据,此时则需要用到网络协议包
- 网络协议包如:0000(ip地址)0000(端口号)0000(资源文件名)0000
-
常见网络协议(根据条件需要选择不同的协议)
- FTP协议(文件传输协议):
- HTTP协议(超文本传输协议):
-
HTTP网络协议包
- 在基于B/S结构下互联网通信过程中,所有在网络中传递信息都是保存在HTTP网络协议包中
- 分类:
- http请求协议包:在浏览器准备发送请求时,负责创建一个http请求协议包,浏览器将请求信息以二进制形式保存在http请求协议包各个空间中,有浏览器负责将http请求协议包(浏览器调用操作系统的api发送请求)推送到指定服务端计算机
- http响应协议包:http服务器在定位到被访问的资源文件之后,负责创建一个http响应协议包,http服务器将定位文件内容或文件命令以二进制形式写入到http响应协议包各个空间,由http服务器负责将http响应协议包推送回发起请求的浏览器上
-
HTTP请求协议包内部空间
- 空间划分(4空间):
- 请求行(浏览器network直接看到):
- url:请求地址(http://服务器地址:端口号/xxx.html)
- method:请求方式(post/get)(通过地址栏发送的请求为get)
- 请求头(浏览器network直接看到):
- 请求参数信息(get)
- 空白行:
- 没有任何内容,起到隔离作用
- 请求体:
- 请求参数信息(post)
- 请求行(浏览器network直接看到):
- 空间划分(4空间):
-
HTTP响应协议包内部空间
- 空间划分(4空间):
- 状态行
- http状态码
- 响应头
- content-type:指定浏览器采用对应编译器对响应体二进制数据进行解析
- 空白行
- 没有任何内容,起到隔离作用
- 响应体(均是二进制形式)
- 可能被访问静态资源文件内容
- 可能被访问的静态资源文件命令
- 可能被访问的动态文件运行的结果
- 状态行
- 空间划分(4空间):
三、HTTP服务器(有求必应)
- 服务器:是一种安装在服务端计算器的资源文件调度器(服务器软件)。每一种服务器专门接受特定的请求协议。对特定的文件进行调用管理。如mysql服务器,http服务器
- http服务器:http服务器是服务器中的一种,其行为与http协议相关。http服务器可以接收来自于浏览器的http请求协议包,并自动对http请求协议包内容进行解析,解析后自动定位被访问的文件,并将定位的文件内容写入到http响应协议包中,最后负责将响应协议包推送回发起请求的服务器上
- http服务器分类:http服务器在B/S通信模型下广泛使用,到目前为止已经产生了大量类型。目前在软件行业中比较知名的http服务器如下。IT行业中99%的http服务器都是由java语言进行开发。
- JBOSS服务器
- Glassfish服务器
- Jetty服务器
- WebLoginc服务器
- Websphere服务器
- Tomcat服务器:是Apache软件基金会中的一个核心项目,由Java技术开发,由Apache、Sun公司共同开发而成,支持最新的servlet和JSP规范,技术先进、性能稳定、免费。是目前最流行的http服务器,属于轻量级应用服务器,在中小型和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。可利用它在一台计算机上模拟基于B/S结构的互联网通信流程
四、Tomcat服务器
-
安装:解压即可安装成功,将解压后Tomcat至于显眼位置
-
配置(Mac或Linux操作系统自行百度):我的电脑->右键->属性->高级系统设置->环境变量->系统变量中进行变量的配置。JAVA_HOME与JRE_HOME两者配置其一即可
- JAVA_HOME:指向JDK安装地址
- JRE_HOME:指向JRE安装地址
- CATALINA_HOME:指定tomcat的安装地址
-
启动(命令行进入到存放在tomcat安装位置/bin)(一次只能运行一个):startup
-
关闭(命令行进入到存放在tomcat安装位置/bin):shutdown
-
Tomcat文件结构(七个工作文件夹):
- bin:管理命令中心
- conf:tomcat核心配置文件,核心是server.xml文件(相当于mysql的my.ini文件),默认端口号8080(可修改)
- lib:tomcat所依赖的jar包
- logs:日志信息,提供给运维查看
- temp:tomcat运行时产生的临时文件
- webapps:当服务器收到浏览器的请求后,在默认情况下会到该文件夹搜索资源文件,即一个网站的根目录。
- work:tomcat的工作空间,将JSP文件编辑成Java文件并编译成类文件,new出对象实例,调用内部方法进行处理
-
模拟互联网通信
- 在tomcat中的webapps中创建一个网站myWeb(网络资源站点,由多个网页组成,实质上放置可被http服务器调用的静态资源文件和动态资源文件)(多使用英文)
- 将静态资源文件,以及动态资源文件放置其中
- 使用浏览器通过url进行访问:http://服务器地址:tomcat端口号/myWeb/静态资源文件或动态资源文件
-
通过IDEA管理Tomcat
-
文件->设置(IntelliJ IDEA->preference)->构建、执行、部署->应用程序服务器->加号->选择Tomcat->指向Tomcat的安装目录(同时可以自动关联Tomcat的lib目录中的jsp和servlet的jar包)
-
配置Tomcat开关:运行->编辑配置->加号->Tomcat服务器
-
设置完后,则可启动Tomcat
-
-
使用IDEA创建网站
-
新建一个普通的java的project
-
文件->项目结构->modules->加号->选择web->create artiface->应用->ok
-
完成后目录结构如图所示,
- src文件夹:存放作为动态资源文件的java文件
- web文件夹:存放作为静态资源文件(图片、html、css、javascript)、WEB-INF文件夹
- WEB-INF:
- lib文件夹:依赖的jar(mysql驱动等)
- web.xml:核心配置文件,通知Tomcat当前网站哪些java类是动态资源文件
- 静态资源文件:如html,css,javascript
- WEB-INF:
-
再按上图配置好Tomcat,在运行->编辑配置,tomcat部署中加号选择好工件,可以给网站起别名(别名即为网站根目录),必须以"/"开头,将网站交给Tomcat进行管理(发布一个网站)
-
war模式:将WEB工程以包的形式上传到服务器 ;war模式这种可以称之为是发布模式,先打成war包,再发布;
-
war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器;war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。
-
-
按运行小三角即可开启服务器,测试运行时多采用debug按钮进行运行,同时将以下图进行修改,实现热部署
-
五、Web应用开发流程
- 在数据库中创建数据表
- 使用IDEAs创建一个Java web项目
- 在src目录下,建立entity包,创建表对应的实体类,每张表对应一个实体类
- 在src目录下,建立util包,创建工具类如JdbcUtil
- 在src目录下,建立dao包,创建对数据库的连接以及数据表的增删查改进行封装dao类,每张表的增删改查对应一个dao类
- 在web下WEB-INF下创建lib文件夹,存放各类依赖的jar包,如mysql对JDBC的实现jar包、servlet、JSP的jar包
- 在src目录下,建立controller包,创建Servlet接口实现类,一个Servlet就是一个服务
- 调用请求对象读取请求头参数信息,将参数封装成实体类对象
- 调用dao类,new dao()对象,进行数据库进行增删改查操作(增的参数用实体类封装、查的参数无需封装,返回参数用实体类封装、该的参数用实体类封装、删的参数无需封装)
- 浏览器根据响应头content-type指定编译器对响应二进制内容编辑
- 调用响应对象将根据处理验证结果,以二进制形式写入到响应体(使用IO流)
- tomcat负责销毁请求对象request和响应对象response
- tomcat负责将http响应协议包推送到发起请求的浏览器上
- 浏览器将编辑后结果在窗口中展示给用户
- 写静态资源文件html,css,javascript控制用户的请求行为(前端),让用户无需在地址栏输入请求文件,只需鼠标点击按钮或超链接即可完成数据请求操作