public class CountServlet extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("image/jpeg");
                ServletOutputStream sos = response.getOutputStream();
BufferedImage image = new BufferedImage(80, 20,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.red);
g.setFont(new Font(null, Font.ITALIC | Font.BOLD, 18));
String value=getAccessCount(request);
g.drawString(value,0,18);
g.dispose();
ImageIO.write(image, "JPEG", sos);
sos.close();
} private String getAccessCount(HttpServletRequest request) {
String Pagekey=null;
Properties proty = new Properties();
String count = "0";
try {
InputStream input=this.getClass().getResourceAsStream("/count.properties");
proty.load(input);
count = proty.getProperty("Pagekey");
int c = Integer.parseInt(count)+ 1;
count = new Integer(c).toString();
proty.put("Pagekey", "count");
proty.store(new FileOutputStream(this.getServletContext().getRealPath("/count.properties")), "the page is accessed");
input.close();
} catch (IOException e) { e.printStackTrace();
}

return count;
}}上面的程序是统计访问页面的人数,统计的数据保存在count.properties中,属性文件内容Pagekey=15,但我第一次访问后,浏览器中显示为16,但是属性文件数据没变化,这儿的store()方法没起作用吗?该怎么改??

解决方案 »

  1.   

    流没关闭。proty.store(new FileOutputStream(this.getServletContext().getRealPath("/count.properties")), "the page is accessed");==>
    FileOutputStream fos = new FileOutputStream(this.getServletContext().getRealPath("/count.properties"))
    proty.store(fos , "the page is accessed");
    fos.close();
      

  2.   

    input.close();//前移
    FileOutputStream fos = new FileOutputStream(this.getServletContext().getRealPath("/count.properties"))
    proty.store(fos , "the page is accessed");
    fos.close();
      

  3.   

    一边读一边写好像不行吧,先关INPUT的吧