Today, Total은 개념을 이렇게 잡았습니다.
visit 이라는 Table을 만들어서 사용자가 해당 미니홈페이지를 클릭했을 때,
오늘의 날짜를 자동으로 visit Table에 삽입하고 (Today 증가)
오늘의 날짜와 visit Table의 방문날짜를 비교하여
오늘의 날짜를 가진 Row(행)만 Count 하여 보여주고 (누적된 Today 中 오늘의 Today)
visit Table에 삽입되어진 전체 데이터의 수를 보여준다. (Total)
1. visit Table을 생성합니다.
1) date 만 가지고 있습니다.
visit Table 생성
2. 해당 미니홈페이지에 들어왔을 때, 어떻게 데이터를 삽입할 것인가..?
VisitCountDAO 에서 각 setTotalCount(총방문 증가), getTotalCount(총방문 가져옴),
getTodayCount(오늘방문자)를 세션이 켜졌을 때 실행이 되면 되는 것입니다.
1) VisitSessionListner.java 에 VisitCountDAO 객체를 생성하여 각 메소드들을 실행시켜주어
이것을 세션에 담습니다.
VisitSessionListener.java
2) 이 VisitSessionListener 가 자동적으로 실행되기 위해서는 Filter 의 개념이 필요합니다.
(사실 Filter랑 조금 다른것처럼 보이지만.. 세션이 생성되었을 경우 메소드가 실행 (sessionCretated)되므로
그러한 의미에서 비유하였습니다.)
https://blog.naver.com/tnwnsrla/222382727761
JSP Filter
자바(JAVA)기반 안드로이드 웹&앱 개발 64일차 (MVC Model2 적용 회원관리, 필터) https://blo...
blog.naver.com
서블릿 리스너(Listener) 설명 및 사용방법
웹 어플리케이션은 이벤트를 통해 서블릿 컨텍스트(환경)의 상태나 HTTP 세션 객체의 상태 변화를 통지해 준다. 이 상태 변화에 응답하는 서블릿 클래스가 리스너 클래스이다. 리스너를 사용하기 위해서는 다음과 같은 과정이 필요하다. 구현할 기능과 관련된 이벤트 리스너 인터페이스를 구현하는 서블릿 클래스 생성(생성시 인자없는 생성자를 반드시 구현해야야함)…
sbsjavaprg.wordpress.com
(1) web.xml에 홈페이지가 켜지면 VisitSessionListener가 동작할 수 있도록 listener 로 설정합니다.
3. VisitCountDAO 에 setTotalCount(), getTotalCount(), getTodayCount()를 생성합니다.
1) getTodayCount() 쿼리문의 뜻은
SELECT COUNT(*) AS TodayCnt FROM visit WHERE V_DATE = date(now())
'visit 테이블로부터 Row(행)의 개수를 Count 하는데, 그것의 AS(알리야스, 별칭)는 TodayCnt 이름으로 한다.
이 때, V_DATE = date(now()) 로 오늘 날짜와 똑같은 날만 센다' 라는 의미입니다.
이 쿼리문으로 해당 visit table을 조회하면 다음과 같이 나옵니다.
2021-06-16 데이터가 visit table에 3개 있으므로 3이 나옵니다. count를 제거하고 조회한다면 아래와 같이 나옵니다.
VisitCountDAO.java (1)
VisitCountDAO.java(2)
4. Today 와 Total 이 보여질 home.jsp 에 sessionScope.todayCount 와 sessionScope.totalCount 를
EL 로 표현하여줍니다.
1) sessionScpoe 는 HttpSession에 등록된 데이터의 이름과 값을 저장하고 있는 map 객체입니다.
EL 사용법 / request, session 등에 있는 값을 jsp에서 간편하게 사용해보자.
EL = Expression Language EL은 header, request, session, application과 같은 객체의 값을 편리하게 가져올 수 있도록 JSP에서 제공하는 기능입니다. EL은 JSP페이지 내에서 어느 위치에서든 사용할 수 있습니다..
joalog.tistory.com
home.jsp
sang12로 로그인
somi1234 로 로그인
그런데, 다시 sang12 로 로그인해서 들어가면 TODAY가 증가합니다..
한 아이디당 하나만 올라가게하려면 어떻게 해야할지 고민해봐야겠네요.
Visit table을 생성할 때, userid 도 같이 들어가도록 하고
기본키를 하나 메겨서, 최신 날짜만 나오도록 하는 방법으로 해야할지.. 잘 모르겠습니다.
'싸이월드 프로젝트' 카테고리의 다른 글
싸이월드 프로젝트 5번 기능(Today, Total) (0) | 2021.06.16 |
---|---|
싸이월드 프로젝트 3번 기능(최신 게시글 및 카테고리 별 게시글 수 보여주기) (0) | 2021.06.16 |
싸이월드 프로젝트 1,2번 기능(자기소개, 메인화면 수정) (0) | 2021.06.16 |