servlet学习笔记8——ServletContext的讲解和使用

来源:互联网 发布:淘宝催评价用语 编辑:程序博客网 时间:2024/06/06 02:22

servlet第六讲


(一)ServletContext的讲解和使用
什么是ServletContex?
可以想象其为一个公用空间,可以被所有的客户访问


如何使用ServletContext?
1.得到ServletContext
this.getServletContext();
2.可将其看做一张表,其与sesseion相似:每一行就为一个属性
----------------------------------------
|   名字(String)|   值(Object)|
----------------------------------------
|                          |                        |-------->属性1
----------------------------------------
|                          |                        |
----------------------------------------
|                          |                        |
----------------------------------------
操作
添加属性:setAttribute(String name,Object ob);
得到值:   getAttribute(String)返回Object
删除属性:removeAttribute(String name)

 

 

示例——添加servletContext属性

示例——从servletContext中得到属性


3.生命周期
ServletContext中的属性的生命周期从创建开始,到服务器关闭而

结束

注意事项:
因为存在ServletContext中的数据会长时间的保存在服务器,会占

用内存,因此我们建议不要想serveltContext中添加过大的数据

 

(二)servlet中如何操作文件
因为serlvet本来就是一个.java文件,因此,其同普通java文件操作

文件是一样的

示例——读取文件内容

示例——把内容写入文件


(三)增加网站计数器
在网站开发中,有很多功能需要使用ServletContext,比如:
1.网站计数器
2.网站在线用户的显示
3.简单的聊天系统
··················
总之,如果是涉及到不用用户共享数据,而这些数据量不大,同时

又不希望写入数据库中,我们就可以考虑使用ServletContext来实

有效点击:
1.只要访问过该网页就算一次,刷新也算一次,有点假
2.不同的ip访问,算一次;如果同一个ip在一定时间(如一天),

不管浏览该网页多少次都算一次
3.用户推出网站,再次访问页算一次

实现方案:
1.当某个用户访问该网页时,就在该数据库中增加一次(比如有一

张统计表)
缺点:对数据库访问太频繁,服务器压力太大
优点:很好理解,也好实现
2.设置一个静态变量,当服务器启动时,可以通过文件或表初始化

该变量;当服务器关闭时,再将变量的值写入到文件或是数据库中
缺点:实现复杂,要求对文件操作
优点:效率高,不会频繁的访问文件或数据库
3.使用ServletContext,它的实现与第二种相似

实现网站计数器:
1.在Wel.java中操作ServletContext,每刷新一次算一次
2.在LoginCl.java中操作ServletContext,用户每成功登陆一次算

一次
3.对2方法的优化改进(减少对文件的操作)
各个用户每登陆一次,就要去操作一个文件,这样效率低下,可不

可以减少对文件的操作次数:
在Servlet的生命周期中——
可以在init()方法中初始化servletContext中属性times对应的初始

可以在destroy()方法中,一次性的将serveletcontext中属性times

对应的值写入文件中

 

代码实现:

在LoginCl.java中:

1.重写init()方法

2.在process()方法中添加计数功能

3.重写destroy()方法

4.在页面显示(Wel.java)

 

原创粉丝点击