Programing/JAVA

JAVA DB, 세션 활용 전체, 금일 방문객수 구하기

리커니 2015. 11. 2.
반응형

 

JAVA DB, 세션 활용 전체, 금일 방문객수 구하기

 

세션, 쿠키 등을 활용한 방문객수 구하는 방법 외에 DB에 데이터를 등록하면서 방문객 수 통계를 내려 한다.

등록 일자 외에 IP정보등 원하는 정보 수집이 가능하다.

 

1. Web.xml 에 Listener추가

웹페이지에 접속을 했을 때 톰캣이 실행되면서 web.xml 을 참조해 리스너가 실행 되도록 등록한다.

 

[web.xml]

1
2
3
4
5
..........
 <listener>
      <listener-class>egovframework.com.web.common.SessionListener</listener-class>
 </listener>
...........
cs

 

 

 

2. 원하는 위치에 SessionListener.java 파일을 추가한다.

web.xml이 참조할 리스너를 구현한다.

 

[SessionListener.java]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package egovframework.com.web.common;
 
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
 
import egovframework.com.web.common.dao.VisitCountDAO;
 
public class SessionListener implements HttpSessionListener {
    public void sessionCreated(HttpSessionEvent arg0) {
        VisitCountDAO visitCountDAO = new VisitCountDAO();
        
        int todayCount = 0;
        int totalCount = 0;
        
        // 전체 방문자 수 +1
        try {
            visitCountDAO.setVisitTotalCount();
             // 오늘 방문자 수
             todayCount = visitCountDAO.getVisitTodayCount();
          
             // 전체 방문자 수
             totalCount = visitCountDAO.getVisitTotalCount();
        } catch (Exception e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
          }
        
        HttpSession session = arg0.getSession();
        
        // 세션 속성에 담아준다.
        session.setAttribute("totalCount", totalCount); // 전체 방문자 수
        session.setAttribute("todayCount", todayCount); // 오늘 방문자 수
    }
 
     @Override
     public void sessionDestroyed(HttpSessionEvent arg0) {
      // TODO Auto-generated method stub
     }
}
cs

 

3. DB에 값을 등록할 DAO를 구현한다.

아래는 개발 환경에 따라 다를 수 있으니 visitCountDAO의 각 클래스의 쿼리문만 작성하겠다.

 

[setVisitTotalCount() ] - 테이블의 현재 시간을 등록

INSERT INTO 테이블명 (컬럼명) VALUES (now())

 

[getVisitTodayCount()] -  금일 등록된 방문자를 카운트 한다.

SELECT COUNT(*) AS count from 테이블명

  WHERE FORMAT(컬럼명, 'YYYY-MM-DD') = FORMAT(now(), 'YYYY-MM-DD')

 

[getVisitTotalCount()] - 전체 방문자를 카운트 한다.

SELECT COUNT(*) AS count from 테이블명

 

4. 카운트를 보여질 JSP 페이지에 표출한다.

오늘 방문자 : ${sessionScope.todayCount} , 전체 방문자 : ${sessionScope.totalCount}

 

 

반응형

댓글

💲 추천 글