본문 바로가기

JSP

총 방문자수 찍기


# 총 방문자수찍기
먼저 총방문자 수 증가하는법은 DB테이블 생성후 증가하거나 쿠키등을 이용하는방법등
여러가지가 있다.
먼저 가장 기초적인 방법으로 만들어보자.

프로젝트의 WebContent에서 new -> 폴더 생성 후 그 폴더에서 -> new -> 파일생성
폴더명은 cnt     파일명은 cnt.txt

cnt.txt
=======
0 엔터(줄바꿈필수)

a.jsp
========
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.io.*" %>
<%
     BufferedReader in=null;
     BufferedWriter bw=null;
     int totalCNT=0;
try{
     String path=application.getRealPath("/cnt/cnt.txt");

     in=new BufferedReader(new FileReader(path));
     totalCNT=Integer.parseInt(in.readLine());
     ++totalCNT;     // 숫자증가 

     bw=new BufferedWriter(new FileWriter(path));
     bw.write(totalCNT+"");     // 문자화?
     bw.flush();
}catch(Exception e){
     out.println(e);
}finally{
     try{
     if(bw!=null){ bw.close(); bw=null; }
     if(in!=null){ in.close(); in=null; }
     }catch(Exception e2){ out.println(e2); }
}
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
     <body>
          <%=session.getId() %>
          총방문자수 : <%=totalCNT%>
     </body>
</html>



하지만 웹브라우저 새로고침할때마다 카운터증가되는문제가있음...
이를 해결하기위해 수정해줌( 하지만 이것도 session을이용하기때문에 웹브라우저 완전끄고 다시키면 
이전 session이사라지기때문에 카운터증가됨..)
a.jsp
==========
if(session.getAttribute("abc")==null){     // session에 변수를 줘서 같은 session이면 카운터안함
     session.setAttribute("abc","aaa");
     ++totalCNT;

     bw=new BufferedWriter(new FileWriter(path));
     bw.write(totalCNT+"");
     bw.flush();
}
-    임의의 abc세션을 만들어줌으로서 중복을 방지