servlet 运行机制

来源:互联网 发布:数据采集标准规范 编辑:程序博客网 时间:2024/06/06 01:08

当用户向浏览器地址栏输入 http://ip:port/helloweb/sayHello?name=zs

1)  浏览器使用 ip:port(端口号)连接服务器
2)  浏览器将请求数据按照 http 协议打成一个数据包(请求数据包)发送给服务器
请求数据包的内容包含了请求资源路径(/helloweb/sayHello?name=zs),
另外,在请求数据包当中,还会包含浏览器自劢生成的一些信息。
3)  服务器创建两个对象:请求对象(Request)和响应对象(Response)
服务器解析请求数据包,将解析乊后的数据存放到请求对象里面,方便 servlet 读取请求
数据(因为 servlet 丌用解析请求数据包,如果要解析,需要理解 http 协议)。
请求对象是 HttpServletRequest 接口的一个实现。
响应对象是 HttpServletResponse 接口的一个实现,响应对象由于存放 servlet 处理的结果。
4)  依据请求资源路径找到相应的 servlet 配置, 通过反射创建 servlet 实例。 然后调用其 service()
方法。
在调用 service()方法时,会将事先创建好的请求对象(request)和响应对象(response)作为参
数迚行传递。在 servlet 内部,可以通过 request 获得请求数据,戒者通过 response 设置响
应数据。
5)  服务器从 response 中获取数据,按照 http 协议打成一个数据包(响应数据包),发送给浏览器。

6)  浏览器会解析响应数据包,取出相应的数据,生成相应的界面。

演示:Servlet 运行原理
当用户向浏览器地址栏输入 
http://ip:port/helloweb/sayHello?name=zs



说明:
1)  建立连接
浏览器根据 IP 地址和端口号(port)和服务器建立连接
2)  打包
浏览器将请求数据按 HTTP 协议打成数据包(http 请求数据包)
http 请求数据包包含“helloweb/sayHello”(请求资源路径)
3)  发送请求
浏览器向服务器发送请求数据包
4)  创建 Request 对象
Servlet 引擎(Tomcat 负责通讯的模块)创建请求对象(Request),方便我们自定义的 Servlet
获得请求数据包中的内容
该对象符合 HttpRequest 接口
5)  创建 Response 对象
Servlet 引擎(Tomcat 负责通讯的模块)创建相应对象(Response)
该对象符合 HttpResponse 接口
6)  创建 HelloServlet 对象
服务器通过反射的方式创建 Servlet 实例
7)  调用 Servlet 实例的 service(request , response)方法
7.1)访问参数
在 service()方法中访问 Request 对象,获得用户提交的一些参数
7.2)处理结果
在 service()方法中将处理结果放入 Response 对象
8)  取数据
Servlet 引擎从 Response 对象中取出数据
9)  打包
Servlet 引擎将取出的数据打包,该数据包符合 http 协议要求
10) 发送响应
浏览器将响应数据包中的数据取出,生成界面

0 0