1.两台计算机通过网络实现文件共享行为
2.互联网通信角色划分1.客户端计算机:用于发送请求,索要资源文件的计算机
2.服务端计算机:用于接收请求,并提供对应资源文件的计算机
3.互联网通信模型 3.1 B/S【主要学习】B,Brower software,浏览器:
(1)浏览器软件是安装在客户端计算机上的一个软件
(2)可以向任意服务器发送请求,索要资源文件
(3)可以将服务器返回的二进制数据解析为文字,数字,图片,视频,命令
S,Server sofeware 服务器软件:
(1)服务器软件是一个安装在服务端计算机上的软件
(2)可以接收任意浏览器发送请求
(3)服务器软件在接收到请求之后自动定位在服务端计算机上被访问的资源文件,将文件解析为二进制数据通过网络发送回发起请求的客户端软件上
适用场景:既适用于个人娱乐市场,又广泛适用于企业日常办公
优点:
(1)不会增加客户获得服务的成本
(2)几乎不要更新浏览器
缺点:
(1)几乎无法有效对服务端计算机资源文件进行保护
(2)服务端计算机工作压力巨大(如何解决高并发也就是多线程的解决方案)
3.2 C/SC,Client software 客户端软件:
(1)客户端软件安装在客户端计算机上
(2)帮助客户端计算机向指定服务端计算机发出请求,索要资源文件
(3)帮助客户端计算机将服务端计算机发送回来的二进制数据解析为文字,数字,图片,视频,命令
S,Server sofeware 服务器软件:
(1)服务器软件是一个安装在服务端计算机上的软件
(2)服务器软件用于接收来自于特定的客户端软件发送的请求
(3)服务器软件在接收到请求之后自动定位在服务端计算机上被访问的资源文件,将文件解析为二进制数据通过网络发送回发起请求的客户端软件上
适用场景:C/S通信模型普遍用于个人娱乐场所,如微信,京东,淘宝,B站,大型网络游戏等,企业办公领域相对应用较少
优点:
(1)安全性较高
(2)有效降低服务端计算机工作压力
缺点:
(1)增加客户获得服务的成本
(2)更新较为繁琐
4.共享资源文件 4.1 共享资源文件1.可以通过网络传输的文件,都被成为共享资源文件
4.2 Http服务器下对于共享资源文件的分类【熟悉】1.静态资源文件:
(1)文件内容固定,如文档,图片,视频
(2)文件内容是命令,且命令只能被浏览器编译和执行(http,css,js)
2.动态资源文件:
(1)文件内容是命令,且命令不能在浏览器中编译和执行,只能在服务端计算机编译和执行(.class)
4.3 静态资源文件和动态资源文件调用方式的区别1.静态资源文件:Http服务器直接通过输出流将静态文件中的内容或者命令以二进制的方式发送给请求的浏览器
2.动态资源文件:Http服务器需要创建当前class文件的实例对象()
class Student
{ public int add(int num1,int num2)
{ int sum = sum1 + sum2 return sum} }
Http服务器(自动) Student stu =new Student();
int 结果 =stu.add(10,20)
system.out.print(结果)
二、HTML编程语言
1.介绍
1.HTML编程语言学称是超文本标记式编程语言,是一种专门在浏览器编译与执行的编程语言
2.作用1.通知浏览器将接收的数据以指定方式在窗口展示(前端工程师)
2.控制浏览器请求行为(前端工程师/服务端工程师)【重点】
3.HTML编程语言规范1.所有命令都是声明在标签中
2.所有命令都是预先定义好的,不允许开发人员创建新的命令(不可以new)
3.所有命令都是不区分英文字母大小写的
4.属性赋值可以“”,‘’,也可以省略双引号和单引号,此时属性之间必须用空格来隔离
5.命令根据书写方式分为:双目标签命令与单目标签命令
6.双目标签命令书写命令分别在开始标签与结束标签,双目标签命令在书写时,结束标签时不能省略
7.单目标签命令书写命令出现在一个标签内,单目标签命令用于表示结束“/”可以省略不写
4.常见的HTML标签命令 5.浏览器发送请求三要素 5.1 控制浏览器发送请求地址1.超链接标签命令:
(1)格式:
内容
(2)工作原理:
超链接标签命令不会被浏览器自动执行,在用户使用鼠标单击超链接标签命令时,这个命令才会执行,执行时会要求浏览器按照href属性中地址发送请求
2.表单标签命令:
(1)格式:
(2)工作原理:
表单标签命令不会被浏览器自动执行,在用户单机提交按钮时,此时表单标签命令被触发执行,执行时要求浏览器立刻按照action属性地址发送请求
5.2 控制浏览器发送请求时采用请求方式1.GET请求方式:
(1)携带的【请求参数数量】不能超过4K
(2)必须在浏览器地址栏上将【请求参数信息】展示出来
(3)必须将请求参数信息保存在Http请求协议包中【请求头】
(4)浏览器在接收到服务器返回的资源文件内容后,必须将资源,文件内容保存在浏览器的缓存中,再次发起相同请求时直接从缓存提取备份没降低请求响应时的速度和难度
2.POST 请求方式:
(1)可以携带任意的【请求参数数量】,文件上传:通过用户浏览器,将客户端计算机文件内容,发送到服务器上去,什么数据都没写的excel表格就8k了
(2)必须在浏览器地址栏上将【请求参数信息】隐藏,如账户登录
(3)必须将请求参数信息保存在Http请求协议包中【请求体】
(4)禁止浏览器将服务器返回资源文件内容进行保存,阅后即焚,比如股票价格,如果get浏览器偷懒
3.控制浏览器发送请求时采用GET/POST请求方式
(1)超链接标签命令在执行时,要求浏览器必须采用GET方式发送请求
(2)表单标签命令存在一个method属性,通过这个属性可以要求浏览器采用对应请求方式发送请求,method属性值默认是get
4.请求方式适用场景【面试】
(1)POST请求方式,用户可以将病毒文件内容发送到服务器上进行攻击,因此绝大多数门户级网站拒绝接收POST请求,日常开发过程中绝大多数请求都是GET
(2)某些场景下必须采用POST请求方式:
文件上传
发起登录验证请求
索要服务器中实时变化的数据时(如股票的价格)
5.3 控制浏览器发送请求时携带请求参数1.请求参数的作用:
用户通过浏览器访问服务端计算机动态资源文件时
class Student
{ public int add(int n1,int n2)
{ int sum = n1+n2; return sum;} }
Http服务器: Student stu = new Student()
stu.add(?,?)
浏览器发送请求时需要携带调用方法需要实参(请求参数)http://www.baidu.con1=100&n2=200 n1=100&n2=200 就是浏览器发送的请求参数
2.格式
请求地址?请求参数名1=值1&请求参数名2=值2
3.表单域标签分类
(1)
(2)
(3)
4.表单域标签value属性默认值:
(1)大多数表单域标签value属性默认值是空字符串 userName=‘ ’
(2)对于radio和checkbox来说,value属性默认值‘on’字符串
5.表单域标签作为请求参数条件
(1)必须声明在form标签内部
(2)必须声明name属性
(3)radio(被选中),checkbox(被选中),disabled(value不可被修改不可作为参数),readOnly(value不可被修改但可作为参数)
三、CSS编程语言 1.介绍一种专门在浏览器编译并执行的编程语言
2.作用用于定位浏览器HTML标签并对定位的HTML标签中【样式属性】进行统一管理
四、Http网络协议 1.网络协议包1.在网络中传递信息都是以【二进制】形式存在
2.接收方【浏览器/服务器】在接收信息后,要做的第一件事就是将【二进制数据】进行编译为【文字,图片,视频,命令】
3.传递信息数据量往往比较巨大,导致接收方很难在一组连续二进制得到对应数据
比如 浏览器发送请求:http://192.168.100.2:8080/index.html
这个请求以二进制形式发送:0101010111100100101010
Http服务器很难从二进制数据得到相关信息(数据量巨大且很难知道哪个是头哪个是尾)
4.网络协议包:一组有规律的二进制数据,在这组数据中,存在了固定的空间,每一个空间专门存放特定信息,这样接收方在接收网络协议包之后,就可以到固定空间得到对应信息,网络协议包出现极大降低了接收方对二进制数据编译难度
2.常见网络协议包1.FTP网络协议包
2.Http网络协议包
3.Http网络协议包在基于B/S结构下互联网通信过程中,所有在网络中传递信息都是保存在Http网络协议包中,分为Http请求协议包和Http响应协议包
4.Http请求协议包和响应协议包介绍1.Http请求协议包:在浏览器准备发送请求时,负责创建一个Http请求协议包(其实不是浏览器创建,暂时这样写方便理解),浏览器将请求信息以二进制形式保存在Http请求协议包各个空间由浏览器负责将Http请求协议包推送到指定的服务端计算机上去
2.Http响应协议包:Http服务器在定位到被访问的资源文件后,负责创建一个Http响应协议包,Http服务器将定位文件内容或者文件命令以二进制形式写入Http响应协议包各个空间,由Http服务器负责将Http响应协议包推送发起请求的浏览器上
5.Http请求协议包和Http响应协议包内部空间 5.1 Http请求协议包内部空间1.按照自上而下划分,分为4个空间
(1)请求行:
【
url:请求地址(Http://192.168.100.2:8080/index.html)
method:请求方式(POST/GET)
(F12查看)
】
(2)请求头:
【
请求参数信息【GET】
(F12查看)
】
(3)空白行:
【
没有任何作用,起到隔离作用
(浏览器中看不到)
】
(4)请求体
【
请求参数信息【POST】
(浏览器中看不到)
】
5.2 Http响应协议包内部空间1.按照自上而下划分,分为四个空间:
(1)状态行
【
Http状态码
(F12查看)
】
(2)响应头
【
conten-type:指定浏览器采用对应编译器对响应体二进制数据进行解析
(F12查看)
】
(3)空白行
【
没有任何作用,起到隔离作用
(浏览器中看不到)
】
(4)响应体
【
可能是被访问静态资源文件内容
可能是被访问的静态资源文件命令
可能是被访问的动态资源文件运行结果
(都是以二进制形式)
】
五、Http服务器 1.Http服务器作用Http服务器可以接收浏览器发送的Http请求协议包,并对Http请求协议包内容进行解析,解析后自动定位被访问的文件,并将定位的文件内容写到Http响应协议包中,最后负责将Http响应协议包推送到浏览器中
2.Http服务器分类1.JBOSS服务器
2.Glassfash服务器
3.Websphere服务器(Linux,电商)
4.Tomcat服务器
六、Servlet规范 1.Servlet规范介绍1.servlet规范来自于javaee规范中的一种
2.Servlet规范作用1.指定【动态资源文件】开发步骤
2.指定Http服务器调用动态资源文件规则
3.指定Http服务器管理动态资源文件实例对象规则
3.Servlet规范接口实现类1.Servlet接口来自于Servlet规范下一个接口,这个接口存在Http服务器提供的jar包
2.Tomcat服务器lib文件下有一个servlet-api.jar存放Servlet接口
3.Servlet规范中认为,Http服务器能调用的【动态资源文件】必须是一个Servlet接口实现类
class Student{
//不是动态资源文件,Tomcat无权调用
}
class Student implement Servlet{
Servlet obj=new Teacher();
obj.doGet()
//合法动态资源文件,Tomcat有权调用
}
4.Servlet规范接口实现步骤第一步:创建一个类继承HttpServlet父类,使之成为一个Servlet接口实现类
第二步:重写HttpServlet两个方法,doGet和doPost
第三步:将接口实现类信息【注册】到Tomcat服务器中(注册:通知的意思)
网站---->web---->web-inf---->web.xml
5.Servlet接口实现类实例对象生命周期1.网站中所有的Servlet接口实现类实例对象,只能由Http服务器负责创建,不可手动创建
2.在默认情况下,Http服务器接收到对于当前Servlet接口实现类第一次请求时,自动创建Servlet接口实现类的实例对象
在手动情况下,可以让Http服务器在启动时创建Servlet接口实例类的实例对象
3.Http服务器运行期间,一个Servlet接口只能创建一个实例对象
4.Http服务器在关闭时,自动将网站中所有的Servlet对象进行销毁
6.HttpServletResponse接口 6.1 介绍1.HttpServletResponse接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar
2.HttpServletResponse接口实现类由Http服务器负责提供
3.HttpServletResponse接口负责将doGet/doPost方法执行结果写入到【响应体】中交给浏览器
4.开发人员习惯于将HttpServletResponse接口修饰的对象成为【响应对象】
6.2 作用(1)将执行结果以二进制形式写入到【响应体】
(2)设置响应头中【content-type】属性值,从而控制浏览器使用对于编辑器,将响应体二进制数据编译为【文字,图片。视频,命令】
(3)设置响应头中【loction】属性,将一个请求地址赋值给location,从而控制浏览器向指定服务器发送请求
7.HttpServletRequest接口 7.1 介绍(1)HttpServletRequest接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar
(2)HttpServletRequest接口实现类由Http服务器负责提供
(3)HttpServletRequest接口负责将doGet/doPost方法运行时读取Http请求协议包中信息
(4)开发人员习惯于将HttpServletResponse接口修饰的对象成为【请求对象】
7.2 作用(1)读取Http请求协议包中【请求行】信息,
(2)读取Http请求协议包中【请求头】或【请求体】
(3)可以代替浏览器向Http服务器申请资源文件调用
8.请求对象和响应对象生命周期1.在Http服务器接收到浏览器发送的【Http请求协议包】之后,自动为当前的【Http请求协议包】生成一个【请求对象】和一个【响应对象】
2.在Http在调用doGet/doPost方法时,负责将【请求对象】和【响应对象】作为实参传递到方法中,确保doGet/doPost正确执行
3.在Http服务器准备推送Http响应包之前,负责将本次请求关联的【请求对象】和【响应对象】销毁
【请求对象】和【响应对象】生命周期贯穿一次请求的处理过程中
【请求对象】和【响应对象】相当于用户在服务端的代言人
9.Http状态码 9.1 介绍1.由三位数字组成的一个符号
2. Http服务器在推送响应包之前,根据本次i请求处理情况,将Http状态码写入到响应包中【状态行】上
如果Http服务器针对本次请求,返回了资源文件,通过Http状态码通知浏览器应该如何处理这个结果;如果Http服务器针对本次请求,无法返回对于的资源文件,通过Http状态码向浏览器解释不能提供服务的原因
9.2 分类1.组成:100-599 分为五类
2.1xx:
最有特征:100:通知浏览器本次返回的资源文件并不是一个独立的资源文件,需要浏览器在接收响应后继续向Http服务器索要其他资源文件
3.2xx:
最有特征:200:通知浏览器本次返回的资源文件是一个完整独立的资源文件,通知浏览器在接收到之后不需要索要其他关联文件
4.3xx:
最有特征:302:通知浏览器本次返回的不是一个资源文件内容,而是一个资源文件地址,需要浏览器根据这个地址自动发起请求来索要这个文件
response.sendRedirect("资源文件地址")写入到响应头location中,Tomcat此时会将状态码302写入到状态行中
5.4xx:
404:通知浏览器,由于在服务端没有定位到被访问的资源文件因此无法提供相关帮助
405:通知浏览器,在服务端已经定位到被访问的资源文件,但是Servlet对于浏览器采用的请求方式不能接收
6.5xx:
500:通知浏览器,在服务端已经定位到被访问的资源文件,这个Servlet可以接收浏览器采用的请求方式,但是Servlet在处理请求期间,由于Java异常导致处理失败
10.多个Servlet之间调用规则1.前提条件:
某些来自于浏览器发送的请求,往往需要多个Servlet协同处理,但是浏览器一次只能访问一个Servlet,导致用户需要手动通过浏览器发送多次请求,增加获得服务难度
2.提高用户使用感受规则:
无论本次请求设计多少Servlet,用户只要手动通知浏览器发起一次请求即可
3.多个Servlet之间调用规则:
(1)重定向解决方案
(2)请求转发解决方案
11.重定向解决方案 11.1 工作原理用户第一次通过【手动方式】通知浏览器访问OneServlet,OneServlet工作完毕后,将TwoServlet地址写入到响应头location属性中,Tomcat将302状态码写入到状态行
浏览器接收到响应包后,读取到302状态码,此时浏览器自动根据响应头location属性地址发起第二次请求,访问TwoServlet完成请求中剩余任务
11.2 实现命令response.sendRedirect("请求地址")
将地址写入到响应头中location属性
11.3 特征(1)请求地址:
可以把当前网站内部资源文件地址发送给浏览器(/网站名/资源文件名),也可以把其他网站资源文件地址发送给浏览器(http://ip地址:端口号/网站名称/资源文件名称)
(2)请求次数:
浏览器至少发送两次请求,只有第一次请求是用户手动发送,后续都是浏览器自动发送
(3)请求方式:
重定向解决方案中华,通过地址栏通知浏览器发送下一次请求,因此重定向解决方案调用的资源文件接收的请求一定是【GET】
(4)缺点:
重定向解决方案需要在浏览器和服务器之间多次往返,大量时间消耗在往返中,增加用户等待时间
12.请求转发解决方案 12.1 工作原理用户第一次通过手动方式要求浏览器访问OneServlet,OneServlet工作完毕后,代替浏览器向Tomcat发出请求,申请调用TwoServlet,Tomcat接收到这个请求后,自动调用TwoServt来完成剩余任务
12.2 实现命令请丢对象代替浏览器向Tomcat发起请求
//1.通过当前请求对象生成资源文件申请报告对象
RequestDispatcher report = request.getRequestDispatcher("/资源文件名");必须以/开头
//2.将报告对象发送给Tomcat
report.forword(当前请求对象,当前响应对象)
3.优点:
(1)无论涉及多少个Servlet,用户只需要手动通过浏览器发送一次请求
(2)Servlet之间的调用发生在服务端计算机上,节省服务器于浏览器之间往返次数和时间,增加处理服务速度
4.特征:
(1)请求次数:
在请求转发过程中,浏览器只发送一次请求
(2)请求地址:
只能把当前网站内部资源文件地址发送给浏览器(/资源文件名)
request.getRequestDispatcher(”/资源文件名“);不用写网站名
(3)请求方式:
浏览器只发送了一个Http请求协议包,参与本次请求的Servlet共享一个请求协议包,因此,这些Servlet接收的请求方式与浏览器发送的请求方式保持一致
13.多个Servlet之间数据共享实现方案 13.1 数据共享OneServlet工作完毕后,将产生的数据传给TwoServlet使用
13.2 Servlet规范中提供四种数据共享方案(1)ServletContext接口
(2)cookie类
(3)HttpSession接口
(4)HttpServletRequest接口
14.ServletContext接口 14.1 介绍(1)来自于Servlet规范中一个接口,在Tomcat中存在servlet-api-jar,在Tomcat中负责提供这个接口的实现类
(2)如果两个Servlet来自于同一个网站,网站彼此之间通过网站的ServletContext实例对象实现数据共享
(3)开发人员习惯于将ServletContext修饰的对象成为【全局作用域对象】(Request和Response修饰的对象为请求对象和响应对象)
14.2 工作原理(留言板)每一个网站都存在一个【全局作用域对象】,相当于一个Map,在这个网站中OneServlet可以将一个数据存入到次【全局作用域】对象中,当前网站中其他Servlet此时都可以从【全局作用域】对象得到这个数据使用
14.3 全局作用域生命周期(很对对象是直接使用的,不是我们创造的,所有我们要知道他们的生命周期)(1)Http服务器启动过程中,自动为当前网站内存中创建一个【全局作用域对象】
(2)Http服务器运行过程中,一个网站只有一个【全局作用域对象】
(3)Http服务器运行过程中,【全局作用域对象】一直处于存活状态
(4)Http服务器准备关闭时,负责将当前网站中【全局作用域对象】销毁
总结:一个网站只有一个【全局作用域对象】,其生命周期贯穿整个运行期间
14.4 命令实现【同一个网站中】OneServlet将数据共享给TwoServlet
OneServlet
pubulic void doGet(HttpServletRequest request,HttpServletResponse response){
//1.通过【请求对象】向Tomcat索要当前网站中的【全局作用域对象】
ServletContext application = request.getServletContext();
//2.将数据添加到【全局作用域对象】作为【共享数据】
application.setAttribute("key1",数据);}
TwoServlet
pubulic void doGet(HttpServletRequest request,HttpServletResponse response){
//1.通过【请求对象】向Tomcat索要当前网站中的【全局作用域对象】
ServletContext application = request.getServletContext();
//2.从【全局作用域对象】得到指定关键字数据获取【共享数据】
Object 数据 = application.getAttribute("key1");}
15.cookie 15.1 介绍(1)来自于Servlet规范中一个工具类,在Tomcat中存在servlet-api-jar中
(2)如果两个Servlet来自于同一个网站,为同一个用户/浏览器服务,此时借助cookie对象进行数据共享
(3)cookie存放当前用户私人数据,在共享数据过程中提高服务质量
(4)cookie在现实生活中相当
15.2 工作原理用户通过浏览器第一次向myWeb网站发起请求申请OneServlet,OneServlet在运行期间创建一个cookie存储与当前用户相关数据OneServlet工作完毕后,【将cookie写入到响应头】交还给当前浏览器。
浏览器收到响应包后,将cookie存储在浏览器缓存中,
一段时间后,用户通过【同一个浏览器】,再次向【同一个网站】发送请求申请TwoServlet时,【浏览器需要无条件的将myWeb网站之前推送过来的cookie,写入到请求头中发送过去】,此时TwoServlet运行时,就可以通过读取请求头中的cookie信息,得到OneServlet提供的共享数据.
15.3 命令实现同一个网站OneServlet和TwoServlet借助cookie实现数据共享
OneServlet{
public void goGet(HttpServletrequest request,HttpServletresponse response){
//1.创建cookie对象
cookie card = new cookie(“key1”,“abc”);
//cookie相当于一个map
//一个cookie中只能存放一个键值对
//这个键值对key与value只能为String
//2.【发卡】将cookie写入到响应头,交给浏览器
resp.addcookie(card);
}
}
用户/浏览器 ---------》响应包【200】
【cookie:key = abc】
浏览器向myWeb网站发起请求访问TwoServlet-------》请求包【url:/myWen】
【请求参数:xxxx
cookie = abc
... 】
TwoServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response){
//1.调用请求对象,从请求头中得到浏览器返回的cookie
cookie[] cookieArray = request.getcookies();
//2.遍历cookie
for(cookie card:cookieArray){
String key = card.getName();//读取key
String value = card.getValue()
}
}
}
15.4 点餐系统 15.5 cookie的生命周期(1)默认情况下,cookie存放在浏览器软件缓存中,关闭浏览器cookie就被销毁
(2)手动设置时,可以要求浏览器将收到的cookie存放在客户端硬盘上,同时要指定cookie在硬盘上的存活时间,在存活时间内,关闭客户端计算机,关闭服务器,都不会被导致cookie被销毁;在存活时间到达时,cookie自动从硬盘上被删除
16.HttpSession接口 16.1 介绍(1)来自于Servlet规范中一个接口,在Tomcat中存在servlet-api-jar中,实现类由Http服务器提供,Tomcat提供实现类在servlet-api-jar中
(2)如果两个Servlet来自于同一个网站,为同一个用户/浏览器服务,此时借助HttpSession对象进行数据共享
(3)开发人员习惯于将HttpSession接口修饰对象成为【会话作用域对象】
16.2 HttpSesion与cookie的区别(1)存储位置不同
cookie:客户端计算机(浏览器内存/硬盘)
HttpSession:服务端计算机
(2)数据类型:
cookie:只能为String
HttpSession:任意类型共享数据Object
(3)数据数量:
cookie:一个cookie对象只能存放一个共享数据
HttpSession:使用map集合存放共享数据,可以存放任意数量共享数据
(4)参照物:
cookie:相当于客户在服务端【会员卡】
HttpSession:相当于客户在服务端【私人保险柜 】
16.3 命令实现OneServlet{
public void Get(HttpRequest request,HttpResponse response){
//1.调用请求对象向Tomcat索要当前用户在服务端的私人存储柜
HttpSession session = request.getSession();
//2.将数据添加到用户私人存储柜
session.setAttribute("key1",共享数据);
}}
TwoServlet{
public void Get(HttpRequest request,HttpResponse response){
//1.调用请求对象向Tomcat索要当前用户在服务端的私人存储柜
HttpSession session = request.getSession();
//2.将数据添加到用户私人存储柜
Object 共享数据 = session.getAttribute("key1");
}}
16.4 Http服务器如何将用户与HttpSession关联16.5 getSession()与getSession(false)
(1)如果当前用户在服务端已经拥有了自己的私人储物柜,要求Tomcat将这个私人储物柜进行返回;如果当前用户在服务端未拥有自己的私人储物柜,要求Tomcat为当前用户创建一个新的私人存储柜
(2)如果当前用户在服务端已经拥有了自己的私人储物柜,要求Tomcat将这个私人储物柜进行返回;如果用户在服务端未拥有自己的私人储物柜,此时Tomcat返回null
16.6 HttpSession销毁时机(1)用户在与HttpSession关联时使用的cookie只能存放在浏览器缓存中
(2)在浏览器关闭时,以为着用户与他的HttpSession关系被切断
(3)由于Tomcat无法检测浏览器何时关闭,因此在浏览器关闭时并不会导致Tomcat将浏览器管理的HttpSession进行销毁
(4)为了解决这个问题,Tomcat为每一个HttpSession对象设置了【空闲时间】,这个空闲时间默认为30分钟,如果当前HttpSession对象空闲时间达到30分钟,此时Tomcat认为用户放弃了自己的HttpSe'e'si'o'n,此时Tomcat就会销毁HttpSession
16.7 HttpSession空闲时间手动设置在当前网站/web/WEB-INF/web.xml
17.HttpServletrequest接口实现数据共享 17.1 介绍 5 1.在同一个网站中,如果两个Servlet之间通过【请求转发】方式进行调用,彼此之间共享一个请求协议包,而一个请求协议包只对应一个请求对象,因此两个Servlet共享一个请求对象,此时可以利用这个请求对象在两个Servelt之间实现数据共享
2.在请求对象实现Servlet之间数据共享功能时,开发人员将请求对象成为【请求作用域对象】
17.2 命令实现OneServlet通过请求转发申请调用TwoServlet时,需要给TwoServlet提供共享数据
OneServlet{
public void Get(HttpServletRequest request,HttpServletResponse response){
//1.将数据添加到【请求作用域对象】中attribute
request.setAttribute("key1",数据);
//2.向Tomcat申请调用TowServlet
request.getRequestDispatcher("/two").forword(request,response);
}
}
TwoServlet{
public void Get(HttpServletRequest request,HttpServletResponse response){
//1.从当前对象得到OneServlet写入的共享数据
Object 数据 = request.getAttribute("key1");
}}
七、Javascript编程语言 1.介绍 2.作用帮助浏览器对用户请求进行处理
3.DOM对象1.DOM = document Object Model, 文档模型对象
2.Javascript不能直接操作HTML标签,只能通过HTML标签关联的DOM对象对HTML标签下命令
4.DOM对象生命周期1.浏览器在接收到HTML文件之后,将HTML文件标签加载到浏览器缓存中,每当加载一个HTML标签时候,自动为这个标签生成一个DOM实例对象
2.在浏览器关闭之前或者浏览器请求其他HTML文件之前,本次的DOM实例对象一直存活在浏览器的缓存中
3.浏览器关闭的时候,浏览器缓存中DOM对象被销毁或者浏览器请求新的资源文件后,浏览器缓存中原有的DOM对象会被【覆盖】
5.document对象1.document对象被成为【文档对象】
2.document对象用于在浏览器内存中根据定位条件定位DOM对象
6.document对象生命周期1.在浏览器将网页中所有标签加载完毕后,在内存中将使用【树形结构】存储这些DOM对象。在树形结构生成完毕后由浏览器生成一个document对象管理这棵树(DOM树)
在浏览器接收网页中标签加载完毕后,自动在浏览器内存生成一个document对象
2.浏览器运行期间,只会生成一个document对象
3.在浏览器关闭时,负责将document对象进行销毁
7.通过document对象定位DOM对象方式1.根据HTML标签的id属性的值定位DOM对象
命令格式:var domObj = document.getElementById("id属性值")
例子: var domObj = document.getElementById("one")
通知document定位id属性等于one的标签关联的DOM对象
2.根据HTML标签的name属性的值定位DOM对象
命令格式:var domArray = document.getElementByName("name属性值")
例子: var domArray = document.getElementByName("deptNo")
部门10
部门20
部门30
通知document定位name属性等于deptNo的标签关联的DOM对象进行定位并封装一个数组进行返回,domAaary就是一个数组存放本次返回的所有DOM对象
3.根据Html标签类型定位DOM对象
命令格式:document.getElementByTagName("标签类型名");
例子: document.getElementByTagName("p");
段落标签
通知document对象将所有段落标签关联的DOM对象进行定位并封装到一个数组进行返回
8.DOM对象对Html标签属性操作 8.1 DOM对象对标签value属性进行取值和赋值操作取值操作:
var domObj = document.getElementById("one");
var num = domObj.value;
赋值操作:
var domObj = document.getElementById("one");
domObj.value = "abc";
8.2 DOM对象对标签中【样式属性】进行取值与赋值操作取值操作:
var domObj = document.getElementById("one");
//读取当前标签【背景颜色属性】值
var color = domObj.style.背景颜色属性
赋值操作:
var domObj = document.getElementById("one");
//通过DOM对象对标签中【背景颜色属性】进行赋值
domObj.style.背景颜色属性 = 值;
8.3 DOM对象对标签中【状态属性】进行取值与赋值操作状态属性:
状态属性的值都是boolean类型
disabled = true;表示当前标签不可使用
disabled = fales;表示当前标签可以使用
checked:只存在于radio标签于checkbox标签
checked = true;表示当前标签被选中了
checked = false;表示当前标签未被选中
取值操作:
var domObj = document.getElementById("one");
var num = domObj.checked;
赋值操作:
var domObj = document.getElementById("one");
domObj.checked = true;
8.4 DOM对象对标签中【文字显示内容】进行赋值与取值文字显示内容:只存在于双目标签中
100
取值操作:
var domObj = document.getElementById("one");‘
var num1 = domObj.innerText;
赋值操作:
var domObj = document.getElementById("one");
domObj.innerText = 值;
innerText与innerHTML区别:
都可以对标签文字显示内容属性进行取值与赋值操作
innerText只能接收字符串
innerHTML既能接收字符串也能接收HTML标签
9.监听事件 9.1 监听实现监听用户在【何时以何种方式】对当前标签进行操作,当监听到相关行为时,通知浏览器调用对应Javascript函数对用户请求进行处理
9.2监听事件分类1.监听用户何时使用鼠标操作当前标签
(1)onclick:监听用户何时使用鼠标【单击】当前标签
(2)onmouseover:监听用户何时使用鼠标【悬停】当前标签上方
(3)onmouseout:监听用户何时使用鼠标【移出】当前标签上方
(4)onfocus:监听用户何时使用鼠标让当前标签获得【光标】
(4)onblur:监听用户何时使用鼠标让当前标签丢失【光标】
2.监听用户何时使用键盘操作当前标签
(1)onkeydown:监听用户何时在当前标签上【按下键盘】
(2)onkeyup:监听用户何时在当前标签上【弹起键盘】
监听:响应和记录
10.onload事件 11.基于DOM对象实现监听事件与HTML标签之间绑定 11.1 前提条件实际开发过程中,同一个监听事件往往与多个HTML标签进行绑定,增加了开发难度,维护难度
11.2 格式domObj.监听事件名 = 处理函数名 ***此处处理函数后面不能出现()***
11.3 举例var domObj = document.getElementById("one");
domObj.onclick = fun1;
相当于
八、Javascript高级篇 1.argument属性1.Javascript中,每一个函数都包含一个arguments属性
2.arguments属性是一个数组
3.在函数调用时,将实参输入到arguments中,再由arguments将数据传递给形参
4.arguments属性存在,可以将Javascript中函数在调用时传递实参与形参进行格式,增加函数调用灵活性
5.arguments属性只能在函数体内使用,不能在函数体外使用
2.function类型对象 2.1介绍1.function是Javascript中一种高级数据类型
2.一个function类型对象用于管理一个具体函数
3.Javascript中function类型相当于Java中Method类型
2.2 function类型对象声明方式1.标准声明方式
2.匿名声明方式
3.标准声明方式
function 函数对象名(参数1,参数2){
命令
};
4.匿名声明方式
var 函数对象名 = function(参数1,参数2){命令1,命令}
5.function类型对象创建的时机
浏览器在加载时,共加载两次
(1)第一次加载,将标签所有以标准形式声明函数对象进行创建
(2)第二次加载,将标签所有命令行按照自上而下顺序来执行
3.局部变量与全局变量 3.1 局部变量(1)定义:在函数执行体内,通过var修饰符声明的变量
function fun1(){
var name = “mike”;
}
(2)特征:局部变量只能在当前函数执行体使用,不能在函数执行体外使用
3.2 全局变量(1)定义:
1)全局变量可以在当前Html文件中所有函数使用
2)全局变量被声明时,自动分配给window对象作为属性
var name = “mike” 等价于 window.name = "mike"
(2)声明方式:
1)直接在script标签下,通过var声明的变量
2)在函数执行体内,但是没有通过var来修饰的变量也是全局变量,但必须要在函数被调用以后才可以,才相当于window.变量
4.Object类型对象特征1.定义:在Javascript认为所有通过【构造函数】生成对象其数据类型都是Object类型
2.特征:object类型对象在创建后,可以根据实际情况,任意添加属性和方法,也可以移除属性和方法
(1)第一种维护方案:
添加属性
object对象.新属性名 = 值
添加函数
object对象.新函数对象名 = function(){};
(2)第二种维护方案:
添加属性
object对象【"新属性名"】= 值
object对象【“新对象函数名”】= function(){}
(3)移除属性的方法
delete object.属性名
delete object.函数名
5.自定义构造函数 5.1 格式function 函数对象名(){}
5.2 调用方法var object类型对象 = new 函数对象名()
5.3 普通函数与构造函数区分1.函数未调用前,无法区分函数身份,只能根据函数调用形式区分
2.判断普通函数: var num = 函数对象名()
3.判断构造函数: var num = new 函数对象名()
4.返回值: 普通函数运行后需要通过return将执行结果返回,构造函数运行后,直接返回一个object类型对象,此时函数return相当于无效
6.Javascript中的this指向1.在构造函数,this指向当前构造函数生成的Object类型对象
2.在普通函数,this指向调用当前函数的实例对象
八、Ajax技术 1.介绍Ajax,全称Asynchronous Javascript and XML,核心是《异步对象》(XMLHttpRequest),异步对象存在浏览器内存中,使用Javascript语法创建和使用该对象
2.作用用在浏览器中做局部刷新
3.步骤1.创建异步对象
var xmlHttp = newXMLHttpRequest();
2.绑定onreadstatechange事件
异步对象发起请求,获取数据都会触发onreadystatechange事件,这个事件需要指定一个函数,在函数中处理状态的变化
btn.onclick = fun1(){}
function fun1(){
window.alter("Hello")
}
例如:
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4 && status == 200){
//可以处理服务端的数据,更新当前页面
var date = xmlHttp.responseText;
document.getElementById("name").value = date;
}
}
4.异步对象的属性readState表示异步对象请求状态变化
0:创建异步对象时,new XMLHttprequest();
1:初始化异步请求对象,xmlHttp.open();
2:发送请求,xmlHttp.send();
3:从服务器端获取了数据,此时是3,注意3是异步对象内部使用,获取了原始的数据
4:异步对象把接收的数据处理完成后,此时开发人员在4的时候处理数据,更新当前页面
status属性,表示网络请求状况,404,500,200等,status==200时,表示网络请求是成功的
3.初始异步请求对象
异步的方法open()
xmlHttp.open(请求方式get | post,"服务端的访问地址",同步|异步请求(默认为true))
4.使用异步对象发送请求
xmlHttp.send();
获取服务器返回的数据,使用异步对象属性reponseText
例如:xmlHttp.responseText
回调:当请求状态变化后,异步对象会自动调用onreadystatechange事件的函数
5.json 九、jQuery技术



