javaweb_(杨)
抽象类的作用:
- 降低接口实现类对接口实现过程的难度
- 将接口中不需要使用的抽象方法交给抽象类进行完成,这样接口实现类只需要对接口需要方法进行重写
通过地址栏访问一定是get方式
互联网通信流程介绍
本阶段使用命令都是老旧命令,不需要记忆
一定要记住互联网通信流程细节
涉及技术(老旧):
- 控制浏览器行为技术:HTML,CSS,JAVASCRIPT
- 控制硬盘上数据库行为技术:MySql数据库管理使用(SQL重点),JDBC规范
- 控制服务端Java行为技术:Http服务器,Servlet接口,JSP技术
- 互联网通信流程开发规则:MVC
- 贯穿项目------在线考试管理系统
什么是互联网通信
两台计算机通过网络实现文件共享行为,就是(互联网通信)
互联网通信过程中角色的划分
客户端计算机:用于发送请求,来索要资源文件的计算机
服务端计算机:用于接收请求,发送资源文件的计算机
互联网通信模型
- C/S通信模型
- C,client software:客户端软件
- 客户端软件专门安装在客户端计算机上
- 帮助客户端计算机向指定服务端计算机发送请求,索要资源
- 帮助客户端计算机将服务端计算机发送回来的(二进制数据)解析为(文字,数字,图片,视频,命令)
- S,server software:服务器软件
- 服务器软件专门安装再服务端计算机上
- 服务器软件用于接收来自于特定的客户端软件发送请求
- 服务器软件再接受到请求之后自动的在服务端计算机上定位被访问的资源文件
- 服务器软件自动的将定位的文件内容解析为(二进制数据)通过网络发送回发起请求的客户端软件上
- 使用场景:个人娱乐市场,企业办公领域相对应用较少
- 优缺点:
- 优点:
- 安全性较高
- 有效减低服务端计算机工作压力
- 缺点:
- 增加客户获得服务的成本
- 更新较为繁琐
- 优点:
- C,client software:客户端软件
- B/S通信模型
- B:browser,浏览器
- 浏览器安装在客户端计算机软件
- 可以向任意服务器发送请求,索要资源文件
- 可以将服务器返回的(二进制数据)解析为(文字,数字,图片,视频,命令)
- S,server software:服务器软件
- 服务器软件专门安装再服务端计算机上
- 服务器软件用于接收任意浏览器发送请求
- 服务器软件再接受到请求之后自动的在服务端计算机上定位被访问的资源文件
- 服务器软件自动的将定位的文件内容解析为(二进制数据)通过网络发送回发起请求的浏览器上
- 适用场景:既适用于个人娱乐市场,又广泛适用于企业日常活动
- 优缺点:
- 优点:
- 不会增加用户获得服务的成本
- 几乎不需要更新浏览器
- 缺点
- 几乎无法有效对服务端计算机资源文件进行保护
- 服务端计算机工作压力异常巨大---->(B/S通信下高并发解决方案)
- 优点:
- B:browser,浏览器
共享资源文件
共享资源文件:可以通过网络进行传输的文件,都被称为共享资源文件,所有的文件内容都可以通过网络传输,所有文件都是共享资源文件
Http服务器下对于共享资源文件分类
- 静态资源文件:
- 如果文件内容是固定的,这种文件可以被称为静态资源文件(文档,图片,视频)
- 如果文件存放不是内容而是命令,这个命令只能在浏览器编译与执行,这种文件可以被称为静态资源文件(.html,.css,.js)
- 动态资源文件:
- 如果文件存放命令,并且命令不能在浏览器编译与执行:只能在服务端计算机编译执行,这样的文件可以被称为(动态资源文件)(.class)
静态资源文件与动态资源文件调用区别
-
静态资源文件被索要使,Http服务器直接通过(输出流)将静态文案金中内容或者命令以(二进制形式)推送给发起请求浏览器
-
动态文件被索要时,Http服务器需要创建当前class文件的实例对象,通过实例对象调用对应的方法处理用户的请求,通过(输出流)将运行结果以(二进制形式)推送给发起请求浏览器
class Student{ public int add(int num1,int num2){ int sum = num1 + num2; return sum; } } //Http服务器(自动)创建实例对象 Student stu = new Student(); int result = stu.add(10,20);
开发人员在互联网通信流程担负职责:
- 控制浏览器行为
- 开发动态资源文件来解决用户请求
Http网络协议包
网络协议包:
- 在网络中传递信息都是以(二进制)形式存在的
- 接收方(浏览器/服务器)在接收信息后,要做第一件事,就是将(二进制数据)进行解析(文字,图片,视频,命令)
- 传递信息数据量往往是比较巨大,导致接收方很难在一组连续二进制得到对应数据,比如说:浏览器发送一个请求:http://192.168.100.2:8080/index.html,这个请求信息以二进制形式发送010110111001111,Http服务器很难从二进制数据得到相关信息
- 网络协议包,一组有规律的二进制数据,在这个数据存在了固定空间,每一个空暗金专门存放特定信息,这样接收方在接收网络协议包之后,就可以到固定空间得到对应信息,网络协议包出现极大降低了接收方对接收二进制数据编译难度
常见的网络协议:
- FTP网络协议包
- Http网络协议包
Http网络协议包:
在基于B/S结构下互联网通信过程中,所有在网络中传递信息都是保存在Http网络协议包
Http请求协议包和Http响应协议包
- Http请求协议包:在浏览器准备发送请求时,负责创建一个Http请求协议包,浏览器将请求信息以二进制形式保存在Http请求协议包中的各个固定空间中,由浏览器负责将Http请求协议包推送到指定服务端计算机
- Http响应协议包:Http服务器在定位到访问的资源文件之后,负责创建一个Http响应协议包,Http服务器将定位文件内容或者文件命令以二进制形式写入到Http响应协议包各个固定空间,由Http服务器负责将Http响应协议包推送回发起请求的浏览器上
Http请求协议包内部空间(背)
-
按照自上而下划分,分为四个空间
-
空间划分:
请求行:[ url:请求地址(http://www.baidu.com) method:请求方式(Post/Get) ] 请求头[ 请求参数信息(get方式) ] 空白行[ 没有任何内容,起到隔离作用 ] 请求体[ 请求参数信息(post方式) ]
在浏览器中是看不到空白行和请求体的,只能看到请求行和请求头
Http响应协议包内部结构
-
按照自上而下划分,分为四个空间
-
空间划分
状态行:[ Http状态码 ] 响应头:[ content-type:执行浏览器采用对应编译器,对响应体二进制数据进行解析 cookie location ] 空白行:[ 没有任何内容,起到隔离作用 ] 响应体:[ 可能被访问静态资源文件内容 可能被访问的静态资源文件命令 可能被访问的动态资源文件运行结果 ---都是以二进制形式--- ]
Tomcat的下载和安装,环境配置
Tomcat的文件结构
IDEA管理Tomcat
file–>setting–>build,execution,deployment–>application servers–>+号填加tomcat。
给Tomcat创建一个开关
run–>edit configurations–>+号选择tomcat server–>修改Name,jre ,(on update action,on frame deactivation)这两个修改为(update classes and resource:自动更新资源)等信息–>apply,ok
IDEA创建网站
new moudle,模块名就是网站名,这里可以是中文,因为后面会给网站起别名,创建java模块,右键,点击add frameWork support --> web application
网站内部结构
src文件夹:存放作为动态资源文件的java文件
web文件夹:
- 存放作为静态资源文件(图片,html,css,js)
- 存放网站运行时依赖的jar(mysql)驱动
- 存放网站的核心配置文件(web.xml)
web文件夹下的WEB-INF文件夹:存放依赖的jar(mysql)/核心配置文件web.xml
- lib文件夹:依赖的jar(mysql)驱动
- web.xml:通知Tomcat当前网站那些java类是动态资源文件
特别提醒:静态资源文件,是直接放在web文件下的,和WEB-INF是平级的
网站的发布:
run–>edit configurations,找到创建的开关–>deployment–>+号–>artifact–>选择相应的网站,注意修改下面的Application context:真正的网站名,以“/”开头
Servlet规范
介绍:
- servlet规范来自于JAVAEE规范中的一种
- 作用
- 在servlet规范中,指定(动态资源文件)开发步骤
- 在servlet规范中,指定Http服务器调用动态资源文件规则
- 在servlet规范中,指定Http服务器管理动态资源文件实例对象规则
Servlet接口实现类
-
Servlet接口来自于servlet规范下一个接口,这个接口存在http服务器提供jar包
-
tomcat服务器下lib文件由一个servlet-api.jar存放servlet接口(javax.servelt.Servlet接口)
-
Servelt规范中规定,Http服务器能调用的(动态资源文件)必须是一个Servlet实现类
class Student{ //不是动态资源文件,Tomcat无法调用 } class Teacher implements Servlet{ //合法动态资源文件,Tomcat有权利调用 Servelt obj = new Teacher(); obj.doGet(); }
Servlet接口实现类开发步骤
第一步:创建一个Java类继承于HttpServelt父类,使之成为一个Servlet接口实现类
第二步:重写HttpServlet父类两个方法,doGet()或者doPost()
浏览器以 get 方式访问 ---》oneServlet.doGet()
浏览器以 post 方式访问 ---》oneServlet.doPost()
Tomcat根据Servlet规范调用Servlet接口实现类规则
-
tomcat有权创建servlet接口实现类实例对象
Servlet oneServlet = new OneServlet();
-
Tomcat根据实例对象调用service方法处理当前请求
oneServlet.service()
-
HttpServlet父类中重写了service(),所以子类中可以直接使用
第三步:将Servlet接口实现类信息(注册)到Tomcat服务器中
(网站)—》(web)—>(WEB-INF)—》web.xml
<!--将Servlet接口实现类类路径地址交给Tomcat-->
<servlet>
<!--声明一个变量存储servlet接口实现类类路径-->
<servlet-name>mm</servlet-name>
<!--声明Servlet接口实现类类路径-->
<servlet-class>com.cyg.controller.OneServlet</servlet-class