Servletcontext

servletcontext以下简写(sc)每一个web工程对应一个,用sc定义的属性是全局的,所有用户共享的。

比如想统计一个网站的流量(访问人数),为了不频繁操作数据库,我们使用在本地硬盘上创建一个文件,里面用来记载访问人数,当用户合法,就创建File,随后判断该文件是否存在,如果不存在,就往里面写入初始数字0,如果存在该文件,那就先读出文件里的字符串赋值给变量,随后再将变量+1,最后再写入文件(但是你有没有想过这样不停的在读文件,和需要操作数据库是同样一个理,而在计算机中,效率最快的是读内存,随后我会讲第二种方法,也就是这篇文章的标题),最后在需要用到用户数量的页面同样需要先读出文件里的字符串,然后再将变量给到合适的地方。

以上每当用户登录成功需要不停读文件,效率是不高的。

现在讲下sc.

每一个web项目都有该接口,在内存储存方式很像session,左边key(String型),右边是Object类型,所以如果是数字一定要加上“”,比如你想用一个属性表示访问人数,先在servlet里重写init方法,在init里先创建文件,如果存在就直接读,this.getServletContext("visitor").toString,如果不存在,就可以直接用this.setServletContext(“visitor”,0+“”),在需要显示人数的地方用this.getServletContext("visitor").toString(),把Object类型转成String,就可以了。


当服务器关闭时候执行destroy,把当前的servletContext对应的visitor值写入文件,如此就完成了。

当点击浏览器时不同的用户登录都会实现人数访问量的增加。重写init的时候,一定要记得调用父类的init方法,super.init(config);否则在service/doGet/doPost方法中使用getServletContext方法获取servletContext对象时就会出现异常。

代码有空贴。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容