精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Java>>JAVA编程>>JSP/Servlet>>一个用Servlet做的计数器

主题:一个用Servlet做的计数器
发信人: eagle(老鹰)
整理人: zjxyz(2001-05-10 22:17:54), 站内信件
/*
  Counter.java
  编译之后生成一个Counter.class,一个ReadFile.class,要把
  这两个文件都放在你classes目录下面. 同时要预先建立一个
  D:\myjava\Counter.txt(储存访问人数),并设置一个初值
  程序在Tomcat3.1测试过,能够正常运行
*/

import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import java.util.*; 
import com.sun.image.codec.jpeg.*; 
import java.awt.image.*; 
import java.awt.*; 


class ReadFile{
  String str;
  /*
    Count.txt为保存访问人数的文件,在D:\myjava目录下建立这个文件,
    并设置一个计数器初值,如0,如果计数器文件放在别的目录,或者使
    用的不是Windows平台,请修改下面的路径
  */
  File fi = new File("d:\\myjava\\Counter.txt");
  byte[] b=new byte[(int)fi.length()];
  
  //从Counter.txt文件中读取访问人数
  String read(){  
    try{ 
      FileInputStream fo = new FileInputStream(fi); 
      fo.read(b); 
      str = new String(b);
      fo.close();
      return str; 
    } 
    catch (IOException e){ 
      return("\nFile error: "+e); 
    } 
  }
  
  //访问人数 +1,并写会Counter.txt文件
  void write(){
    try{
      FileOutputStream fo = new FileOutputStream(fi); 
      int i = Integer.parseInt(str);
      i++;
      str=Integer.toString(i);
      b=str.getBytes();
      fo.write(b);
      fo.close();
    }
    catch (IOException e){ 
      System.err.println("\nFile error: "+e); 
    } 
  } 



public class Counter extends HttpServlet { 
  //Process the HTTP Get request 
  public void doGet(HttpServletRequest request, 
         HttpServletResponse response) 
         throws ServletException, IOException { 
    ReadFile rf = new ReadFile();
    String s ="Servlet Counter";
    //String s = "计数器";
    //s = "Servlet " + new String(s.getBytes("ISO-8859-1"),"GBK");
    //如果使用中文字符,需要进行内码变换,否则出现乱码
    response.setContentType("image/jpeg"); 
    ServletOutputStream out = response.getOutputStream(); 
    BufferedImage image = new BufferedImage(85,32, 
         BufferedImage.TYPE_INT_RGB); 
    Graphics g = image.getGraphics(); 
    g.setColor(Color.black); 
    g.fillRect(0, 0, 85, 32); 
    g.setColor(Color.white); 
    g.drawString(s, 4,12); 
    g.drawLine(1,16,83,16);
    g.drawString(rf.read(), 14,29);
    rf.write(); 
    JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out); 
    encoder.encode(image); 
    out.close(); 
  } 

  //Process the HTTP Post request 
  public void doPost(HttpServletRequest request, 
         HttpServletResponse response) 
         throws ServletException, IOException { 
    doGet(request,response); 
  } 

  //Get Servlet information 
  public String getServletInfo() { 
    return "Servlet Cpunter"; 
  } 


[关闭][返回]