servlet 第六讲 servletConte…

第六讲 servletContex ,操作文件,网站计数器


ServletContext 用法


 

1.ServletContext sc= this.getServletContext();

2.sc.setAttribute(name,object);  //objec若为int型则需要+”” 来转换为string类型

3.sc.getAttribute(name);

4.sc.removeAttribute(name);

 

得到属性若需要变成字符串储存,则需要在前面加上:(String)来强制转换。


 

Session cookie ServletContext 三者的位置比较:

servlet <wbr>第六讲 <wbr>servletContex <wbr>,操作文件,网站计数器


 



ServletContext 的功能


1.网站计数器

2.网站在线用户的显示

3.简单的聊天功能的设计

4.

 

如果涉及到不同用户操作共享数据 ,且数据量不大,同时又不希望操作数据库,就考虑使用ServletContext 来实现。


 

网站计数器实现


1.什么是有效的点击,计数,访问量?


(IP? 注销次数?访问网页次数?时间?登录次数?》》不同的网站不同算法)


 

2.方法:


1)当用户访问时,就往DBADD一次数据,但是这往往面临的问题是:数据量大,多用户同步和互斥的问题。


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 catch

 

读取:


1. FileReader f= new FileReader(绝对路径);

2. BufferedReader br =new BufferedReader(f);

3. String num =br.readline();

4. Br.close(); 读取完毕一定要关闭文件流


 

写入:


1.FileWriter =new FileWriter(绝对路径);

2.BufferedWriter bw=new BufferWriter(f);

3.bw.write(你需要写的数据或者对象);

4.bw.close();


5.追加,若不存在文件需要创建等操作,参考java帮助文档



 

 

附:显示客户机IP地址和主机名的方法:


String IP=req.getRemoteAddr();

String Hostname=req.getRemoteHost();



 

思考


1.网站在线用户的显示

2.简单的聊天系统的实现


 

课程讲到这里,基本已经讲述完毕了,该学的知识大部分都已经学习完了,接下来的时间,我有两种选择:



1.用纯servlet来做一个学生信息管理系统

2.继续学习jsp,学习完后,用servlet+jsp做上面的系统。


 

该干嘛呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值