본문 바로가기

JSP

현재 접속자수 표시


#서버의 저장장소 : 4영역 , DB , file
-    db접속하면 속도확느려짐
-    file도 느려짐
-    4영역중에  application!!! ( session으로하면.....몇가지 문제점이 생김 )



[ex] 기본적인 현재접속자수 증가원리
-    application을 이용!
-    로그인성공시 application의 Attribute의 한곳이 계속 증가 
-    로그아웃시 그 한곳이 감소 

loginProcess.jsp
=======================     
     if(id와 pw일치하면){
         if(application.getAttribute("activeCNT")==null)
              application.setAttribute("activeCNT",1);
         else{
              int ac=(Integer)application.getAttribute("activeCNT");
              application.setAttribute("activeCNT",++ac);
         }
     }

-    <jsp:forward page="~~.jsp"> 로 화면이동시 request값은 유지되지만 사실 알고보면
         url주소값이 그대로 화면이동전의 url이 유지된다. 그래서 만약 로그인처리같은것을 처리하고
         방문자수를 카운터증가하고  jsp:forward로화면이동시 이전url이 유지되기때문에 다음화면에서 새로고침시
         이전화면의 처리를 다시하게됨 
          그래서 이런예상이되는곳은 response.sendRedirect("~~.jsp") 로 화면이동해야함



menu.jsp
=================
     <%
     int ac=0;
     if(application.getAttribute("activeCNT")!=null){
          ac=(Integer)application.getAttribute("activeCNT");
     }
     %>
     현재접속자 : <%=ac%>

참고로 아래는 최신버전에서 오류남..... [ = ] 오류 
       <jsp:forward page="main.jsp?cp=<%=p%>"/>
    
     그래서 다음과같이 자식으로 작성해줘야함
       <jsp:forward page="main.jsp"/>
                <jsp:param name="cp" value=<%=p%>/>
     



menu.jsp
=============
<%@ page language= "java" contentType ="text/html; charset=EUC-KR"
    pageEncoding= "EUC-KR" %>
        <%
        int ac=0;
        if (application.getAttribute("activeCNT" )!= null){
              ac=(Integer)application.getAttribute( "activeCNT" );
       }
        %>
                     총방문자수 : < br>
                     현재접속자수: <%=ac %> <br >
                      < a href= "main.jsp?cp=loginForm.jsp" >로그인 </ a>

















[ex] 이제 로그아웃을 통해 접속자수 감소를해보자
[]session.invalidate();  :   세션 모두 없어짐
[]session.getId(); : 현재세션아이디얻기


loginOut.jsp
============
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
     int ac=(Integer)application.getAttribute("activeCNT");
     application.setAttribute("activeCNT",--ac);
     session.invalidate();
     response.sendRedirect("main.jsp");
%>











과제
로그인안했을때 로그아웃이보이면안되고 로그인햇을때도 로그인보이면안됨
현재접속자수 
총방문자수는 로그아웃하면 session.invalidate()때문에 총방문자수 1증가함... 이상하더라도 이렇게되는게 정상이라생각하자...
밑에 DB풀링기법으로 연동하는거배웠으니 그거로 회원목록 가져와보기!





토요일까지과제
그룹과제임 ( 2명이상 )
옷사이트 
project1/top/top1.jpg
project1/하의/하의1.jpg

장바구니담기 
장바구니속 체크박스해서 체크박스는 삭제, 주문하기, 등등 

로그인 되게 
옷사이트 보고 해도됨 





















로그인 + 선택 추가삭제 + 방문자수+ DB풀링기법 과제




* 몇가지 주의할점
     1. war파일임!!
          그래서 만들당시 환경까지 따라옴... 만들당시 was가 톰캣 7환경에서 만들었기때문에
          이클립스에서도 톰캣7 해야함.... 
     2. 톰캣7을 이클립스에서 추가후 위 과제가 db pool기법을 사용하므로 톰캣7의 기본설치에서
          server.xml과 context.xml을 설정해야함.... 설정법은 07.jsp 의 db풀링기법부분 볼것
          ( 한글 들어가면안됨!!주석도!! )
     3. 해당프로젝트의 Targeted Runtimes에 해당 톰캣7을 체크해줘야함( 추가는 되있을것임.. )