第六讲 servletContex ,操作文件,网站计数器
ServletContext 用法
1.ServletContext
2.sc.setAttribute(“name”,”object”);
3.sc.getAttribute(“name”);
4.sc.removeAttribute(“name”);
得到属性若需要变成字符串储存,则需要在前面加上:(String)来强制转换。
Session
ServletContext 的功能
1.网站计数器
2.网站在线用户的显示
3.简单的聊天功能的设计
4.等
如果涉及到不同用户操作共享数据
网站计数器实现
1.什么是有效的点击,计数,访问量?
(IP?
2.方法:
1)当用户访问时,就往DB中ADD一次数据,但是这往往面临的问题是:数据量大,多用户同步和互斥的问题。
2)设置静态变量,SERVER启动的时候初始化该变量,关闭的时候,将它写入数据库中,实现比较复杂,要对文件进行操作,但是效率高,不会频繁的访问数据库
3)使用ServletContext
实现方法:
将计数器的初值赋值方法放于java文件的init函数下,这样只有当网站启动时,才会赋初值,而将最后统计的结果的赋值放于destroy函数中,这样,在关闭网站的时候就可以将其写入文件中,不会丢失。
这两个函数需要自己重写:
- public
void init(){ - try
{ - FileReader
fr=new FileReader("C:\\apache-tomcat-7.0.39\\webapps\\myweb2\\conf\\counter.txt");//从文件中读取数据 - BufferedReader
br =new BufferedReader(fr); - String
counter=br.readLine(); - br.close();//资源必须关闭
- System.out.println("计数器初始化值:"+counter);
- ServletContext
sc=this.getServletContext();//将数据放入ServletContext - sc.setAttribute("counter",
counter); - }
catch (Exception e) { - e.printStackTrace();
- }
- }
- public
void destroy(){ - try
{ - String
counter=(String)this.getServletContext().getAttribute("counter");//从ServletContext中取数据 - System.out.println("关闭服务器前计数器值:"+counter);
- FileWriter
fw=new FileWriter("C:\\apache-tomcat-7.0.39\\webapps\\myweb2\\conf\\counter.txt"); - //FileWriter
fw=new FileWriter("C:\\apache-tomcat-7.0.39\\webapps\\myweb2\\conf\\counter.txt"); //写入文件中 - BufferedWriter
bw=new BufferedWriter(fw); - bw.write(counter);
- bw.close();//资源必须关闭
- }
catch (Exception e) { - e.printStackTrace();
- }
- }
Servlet中操作文件
方法与普通java操作文件是一样的,全程需要try
读取:
1.
2.
3.
4.
写入:
1.FileWriter
2.BufferedWriter
3.bw.write(“你需要写的数据或者对象”);
4.bw.close();
5.追加,若不存在文件需要创建等操作,参考java帮助文档
附:显示客户机IP地址和主机名的方法:
String
String
思考
1.网站在线用户的显示
2.简单的聊天系统的实现
课程讲到这里,基本已经讲述完毕了,该学的知识大部分都已经学习完了,接下来的时间,我有两种选择:
1.用纯servlet来做一个学生信息管理系统
2.继续学习jsp,学习完后,用servlet+jsp做上面的系统。
该干嘛呢?