web应用中http协议的三次握手及过滤器

1、JAVA WEB程序中http协议的三次握手

1、第一次握手:客户端浏览器与服务器建立通信,通过uri访问目标资源。
2、第二次握手:request与response建立握手,完成请求与应答的工作交接,
Request一直工作到目标页面所有java代码都执行完毕,此时用以客户端显示的html代码在内存中生成完毕。此时request将工作流程交接给response,request生命周期结束。
Response叫应答对象,职责是将内存中的html向客户端回写。
3、第三次握手:服务器与客户端浏览器再次握手,由response将内存中的html代码向浏览器回传:
服务器再次连接浏览器,由response将内存中的html代码,向浏览器以io流的形式逐行回传,客户端浏览器接收一行,解释一行,显示一行。

URI和URL的区别:

URI 是统一资源标识符,而 URL 是统一资源定位符。因此,笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。
举个例子来看一下:
统一资源标志符URI就是在某一规则下能把一个资源独一无二地标识出来。
拿人做例子,假设这个世界上所有人的名字都不能重复,那么名字就是URI的一个实例,通过名字这个字符串就可以标识出唯一的一个人。
现实当中名字当然是会重复的,所以身份证号才是URI,通过身份证号能让我们能且仅能确定一个人。
那统一资源定位符URL是什么呢?也拿人做例子然后跟HTTP的URL做类比,就可以有:动物住址协议://地球/中国/浙江省/杭州市/西湖区/某大学/14号宿舍楼/525号寝/张三.人
可以看到,这个字符串同样标识出了唯一的一个人,起到了URI的作用,所以URL是URI的子集。URL是以描述人的位置来唯一确定一个人的。
在上文我们用身份证号也可以唯一确定一个人。对于这个在杭州的张三,我们也可以用:身份证号:123456789来标识他。所以不论是用定位的方式还是用编号的方式,我们都可以唯一确定一个人,都是URl的一种实现,而URL就是用定位的方式实现的URI。

2、过滤器的原理和执行顺序

再次听到老师讲解过滤器,感觉老师的这一张图很简单的,一眼明了能看出一些东西,所以记了下来:

这张图我们能看到request和response的交接点,在这个交接点的左边是客户端发送的request的执行,依次通过过滤器,然后来到servlet,之后response再去往客户端的途中,再次反向依次通过每个过滤器,到达client。

执行顺序: 在Servlet2.x的版本中,过滤器的执行顺序是按照web.xml文件中的Filter-mapping的注册顺序来依次执行的。 在Servlet3.x的版本中,过滤器的执行顺序,是按照Filter的name,按照字典序的顺序来执行的。