servlet容器以及ioc容器感性认识

servlet容器是干什么的?

首先需要明白什么是servlet和web服务器。servlet即server applet的缩写,即服务小程序,也就是我们高大上的程序员天天写的业务逻辑,在servlet层面上开发即是写在service()方法中的doGet()或doPost()方法体内的代码逻辑。web服务器,就是监听固定端口接收网络请求的。这时候有一个问题就会出现了,服务器接收到的请求,怎么找到相应对的servlet程序去处理呢?对的,对的,相信大多数人已经明白了,这就是servlet容器的作用。

专业说法,servlet容器有以下几个作用:

1、通信支持,servlet容器封装了监听端口、创建流等复杂的操作,保证web服务和servlet的对话。

2、生命周期管理,容器加载servlet的类字节码文件、创建对象、调用servlet对象、销毁和回收servlet对象。

3、线程管理,容器会为每次对servlet的请求分配一个线程,并在使用结束后进行回收。

4、等等!

总的来说,就是servlet容器提供了我们servlet代码的管理和运行环境,这样我们就可以解放出来专心写业务代码啦!

一个请求流程

servlet容器以及ioc容器感性认识_第1张图片

 

如上图一个http请求(http://zwh.mc.com/war/weapon/sword.jsp)发送到8080端口,由Connector监听到(上图步骤1),并将该信息发送给servlet容器(上图步骤2),经过解析域名找到对应的zwh.mc.com的主机host,然后解析请求中的路径信息/war/weapon去servletContext环境中去寻找对应的路径映射信息(上图步骤4),然后通过解析sword.jsp得到该环境下对应的的servlet文件(步骤5)。因此在通过servlet容器的管理和协调下,一个请求可以找到对应的servlet即sword.jsp。

联想到spring的ioc容器

spring的ioc容器想必大家都清楚,只要写好类字节码文件,并配置或注解,ioc容器会自动帮你管理该对象的创建、注入调用、销毁等操作,我们程序开发者只需将精力放在创建类信息,并在需要的地方注入该对象即可。看看,ioc的容器也是一个管理的功能,是不是和servlet容器的功能由异曲同工之妙呢。

没有写的特别学究,因为本文的主题是感性认识,如有异议,欢迎提出 。

 

你可能感兴趣的