servletConfig 与 servletContext

5.jpg


servletConfig 与 servletContext 之间的区别:

servletConfig :

和 servlet 是1对1的关系
Tomcat在初始化每个 servlet 前会给它创建1个 config 
调用 HiServlet.init() 前给它创建1个 config
调用 HelloServlet.init() 前给它创建1个 config
如果想给某个 servlet 预置数据,使用 servletConfig

servletContext:

和 servlet 是1对多的关系
Tomcat 在启动的时候就创建唯一的1个 context
所有的 servlet 都可以共享这个对象中的数据
如果想给多个 servlet 预置数据,使用 servletContext


servletConfig 与 servletContext 应用场景:

servletConfig:

假设要开发一个网页游戏
当用户数超出最大在线人数时要排队
登录时判断是否已达到最大人数
登录:LoginServlet
最大在线人数:maxOnline, 可以配置
该参数只给 LoginServlet 自己使用,用 servletConfig 读取即可

servletContext:

软件内有很多的查询功能,都带有分页功能
每页显示的行数 size 是常量,并且可配置
该数据在多个查询之间共用,使用 context 读取


servletContext 的特殊用法:

前提:之前使用 config 和 context 读取的是常量
而 context 还有能力读写变量
用该对象读写的变量是可以被所有的 servlet 所共用的
setAttribute() / getAttribute()
案例:开发流量统计的功能,无论访问哪个功能,流量+1
由于流量是变量,并且在多功能间共用,所以用 context

1.jpg

总结:

当需要给 servlet 预置参数的时候使用这一的对象

若参数只给 一个 servlet 使用,用 servletConfig

若参数给多个 servlet 使用,用servletContext