'CounterServlet File로 저장 하고 불러오기[실습]'에 해당되는 글 1건

  1. 2012.04.19 2012-4-19 CounterServlet File로 저장 하고 불러오기[실습]

* CounterServlet File로 저장 하고 불러오기[실습]

[문제] 방문자수(카운터수)를 파일에 저장해서 방문자수 유지하기

 

 

 


package servlet.lifecycle;

 
import java.io.DataInputStream;
import java.io.DataOutputStream;
 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
 
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CounterServlet extends HttpServlet{
 //변수 저장하는 방법(변수, 파일, DB 세가지 방법이 있다.)
 private int visitCount;
 //카운트 한 값을 저장 시킬 공간
 private String counterFile = "F:\\apache-tomcat-6.0.35\\counter.dat";
 //생성자( 객체 생성)
 public CounterServlet(){
  
 }
 //객체 생성 직후 실행(count값 read 한 다음에 visitCount로 넣기)
 public void init(){
  DataInputStream dataInputStream = null;
  try {
   dataInputStream = new DataInputStream(new FileInputStream(counterFile));
   visitCount = dataInputStream.readInt();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally{
   if(dataInputStream!=null){
    try {
     dataInputStream.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
  
 }
 //객체 소멸 직전 실행(visitCount 값을 파일로 write)
 public void destroy(){
  DataOutputStream dataOutputStream = null;
  try {
   dataOutputStream = new DataOutputStream(new FileOutputStream(counterFile));
   dataOutputStream.writeInt(visitCount);
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally{
   if( dataOutputStream!=null){
    try {
     dataOutputStream.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }
 //service() -> doGet() : 클라이언트 요청이 들어올때 마다 호출
 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();
  out.println("<html><head><title>카운터</title></head>");
  out.println("<body>");
  visitCount++;//카운터의 값을 1증가
  out.println("당신은 "+visitCount+" 번째 방문자 입니다.");
  out.println("</body></html>");
 }
}

 * 결과

 

 

 

Posted by 조은성
,