servlet的运行过程及http协议
1、servlet的运行过程
从浏览器输入http://ip:port/helloweb/sayHello?name=ww
开始分析:
step1:浏览器一句ip,port连接服务器。
step2:浏览器将请求数据打包(即按照http协议,将请求数据打包成一个数据包,里卖弄包含
请求资源路径(/helloweb/sayHello?name=ww))
step3:浏览器发送请求(即将请求数据包发送给服务器)
step4:服务器解析请求数据包,将数据包中的数据提取出来,生成一个request对象(请求对象,其作用是方便servlet读取请求数据)
,另外,还要创建一个response对象(其作用是,servlet将处理结果放置到该对象之后,服务器可以从该对象获取结果,生成
相应的相应数据包发送给浏览器)。
step5:服务器依“/helloweb”找到部署目录下面的文件夹,找到该文件夹下面的web.xml文件。通过该文件找到servlet类名,
接下来通过反射机制创建servlet对象。
step6:服务器调用servlet对象的service()方法。
在调用该方法时,会将第四部创建的request、response对象作为参数传递。
step7:servlet处理请求,在处理请求时,可以通过request获得请求数据。也可以将处理结果放在response对象上。
step8:服务器从response中获取数据,生成相应数据包发送给浏览器。
step9:浏览器解析相应数据包,生成相应的界面。
从中可以看出:
1)、开发一个servlet,我们只需要关注如何处理请求,不用关心网络通讯问题以及协议相关问题,因为这些操作都是服务器来负责的。
2)、servlet不依赖于特定的某个容器(服务器)来运行。
2、http协议:(了解)
1)什么是http协议?
由w3c定义的一套网络应用层协议。定义了浏览器(或其他客户端程序)与web服务器之间通讯的过程与数据的格式。
2)通讯的过程
step1:浏览器向服务器发送建立连接的请求。
step2:浏览器将要发送的数据打包,发送给服务器
step3:服务器处理请求,将请求结果也打包,发送给浏览器
step4:服务器关闭连接。
如果浏览器再次发送请求,需要再次建立连接。
3)数据格式
a,请求数据包(浏览器发送给服务器)
请求行:请求方式(get/post) 请求资源路径 协议的类型与版本
若干消息头:
a1,消息头由w3c定义,通讯的各方都会遵守。
a2,浏览器与服务器会自动在打包时会自动生成一些消息头,也可以编程生成需要的消息头。
实体内容:只有当请求方式是post时,请求参数才会放在这儿。
b,响应数据包(服务器发送给浏览器)
状态行:协议的类型与版本 状态码
b1,状态码是一个数字,有特定的含义,比如:500:系统出错,一般是由于程序运行出错引起的
404:找不到对应的资源。一般是由于路径写错。
200:正确
若干消息头
实体内容:服务器返回给浏览器的处理结果。
3,get请求和post请求
1)哪一些是get请求
a,在浏览器地址栏直接输入某个地址。
b,表单默认提交的方式。
c,点击链接
2)哪一些是post请求
a,表单method="post";
3)比较两种方式:
a,get方式将请求参数放在请求行,放置的数据大小有限制,而post方式将请求参数放在实体内容里面
,理论上大小没有限制。
b,get方式将请求参数显示在浏览器地址栏,不安全,post方式不会显示,相对安全。
get方式适合向服务器请求资源,或者提交少量数据。
post方式适合向服务器提交大量数据。
编码:从Unicode编程本地编码
解码:从本地编码编程unicode