ServletContext与静态变量(static)的区别,数据库连接池放在哪里
Posted 古锁阳关
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ServletContext与静态变量(static)的区别,数据库连接池放在哪里相关的知识,希望对你有一定的参考价值。
这种是放在static中,03_用servlet、request和Druid技术写登录案例 java——数据库连接池——druid_基本使用
这是放在ServletContext中,使用ServletContext缓存数据源 通过实现ServletContextListener接口创建数据库连接池(C3P0方式)
pageContext,Request,Session,servletContext,类变量,局部变量六个范围的区别:
1) Request: 保存的键值仅在同一个request范围中可以取回来。它的范围比Session和servletContext小,缺点是;因范围小无法取,比如访问了两次,第二次无法 取回第一次的,就只能想办法,比如用Session。优点:和Session和servletContext相比,用完就仍,省服务器内存。
2) Session: 与每一个用户浏览器相对应。从Session第一次创建直到关闭,数据都一直保存在服务器内存,所以客户可以一直访问,不用每次都去数据库抓取,提高了性 能。缺点:每个客户的session不能像servletContext那样共享,可能造成大量重复数据;另外session技术建立在cookie和 url重写的基础上。为了让服务器能识别每一个用户浏览器,在来往过程中,需带上Session ID的信息,这样会用掉一点点网络带宽。当有很多用户访问服务器时,这是一笔不小的开销。
3)servletContext: 你的web应用从启动到关闭,这个对象一直有效。所有范围中,它最大。保存的数据可以被所有用户所有servlet访问。(servletContext和servlet的类变量的区别就是:servlet的类变量只能被本身这个servlet访问,不能被其它servlet访问。)优点:少访问数据库。缺点:不像Session一样私密。
Servlet里的ServletContext与类静态变量的区别
大家都知道Servlet里的ServletContext放数据是整个网站共享,而我用一个类定义一个静态变量,这个静态变量也可以被整个网站共享。
比如说,我现在要统计网站的访问人数,使用ServletContext可以,但其实我在Servlet里使用一个静态变量来做记录也可以,请问这两者的区别是什么?------解决方案--------------------
静态变量是写在代码里的,如果需要修改,每次都要改源码,再重新编译。
ServletContext可以读取配置文件,就不需要重新编译了。
以上是关于ServletContext与静态变量(static)的区别,数据库连接池放在哪里的主要内容,如果未能解决你的问题,请参考以下文章