Session 과 Cookie


#클라이언트 상태(데이터)유지 기법
1)session 범위 활용 => 데이타를 서버에 저장 , 서버에서 사용
     웹클라이언트 >>>>>>>>>>>WAS(SESSION에 저장)
2)Cookie 이용 => 데이터를 클라이언트에 저장, 서버에서 사용
     웹클라이언트 >>>쿠키전용(요청 헤더)>>>>>>WAS(데이터 사용)
    |(저장)      |(저장)
메모리          하드웨어
--->쿠키의 제어권은 서버에 있다. (서버가 쿠키 저장 명령을 응답 헤더에 싣어 보냄, 요청도 마찬가지)

***session과 cookie의 차이점
     (1) session은 데이터 타입 상관 없음, cookie는 문자열만 저장
     (2) session은 서버에 저장, cookie는 메모리, 하드웨어에 저장



세션 작동 원리


JSP에서 form을 submit 하는 방법

< form id ="updateForm" name ="updateForm" method ="post" action ="${pageContext.request.contextPath} /ch05/UpdateServlet" >

id의 경우
var updateForm = document.querySelector( "#updateForm" );
var updateForm  = document .getElementById( "updateForm" );
updateForm.submit();

name의 경우
var updateForm  = document.updateForm;
updateForm.submit();


객체 저장소(객채 scope[사용범위]) = 객체를 저장소에 저장하면 어떤 범위에서 사용할 수 있느냐?

useBean에 scope가 선언안되면 default는 page이다.
                                                                                    
 #1 종류 :    page범위      <     request범위         <  session범위  <  application범위
 #2 저장소 : (pageContext)    (HttpServletRequest)    (HttpSession)    (ServletContext)
 #3 저장 메소드 : -------------------------setAttribute("키", 객체) 모두 소유--------------
 #4 호출 메소드 : -------------------------getAttribute("키") 모두 소유 ( ${키} )----------
 #5 page 범위란? : 웹클라이언트1  >>>요청>>>  a.jsp { 객체 생성 및 저장 } 
                             웹클라이언트2 a 생성 객체 사용 불가능 && 다른 jsp에서 a생성 객체 사용 불가능
 #6 request 범위란? ( 요청------->응답까지만 사용) : 웹클라이언트 >>요청>> a.jsp >>>b.jsp 까지 사용가능 즉 요청(request)내에서만 사용 가능
                                                                               response에서는 사용 불가능, 마찬가지로 다른 클라이언트는 새로운 요청이므로 사용 불가능
 #7 session 범위란? (동일한 클라이언트에서 공유) : 한 클라이언트 내에서 계속 사용 가능( 동일한 클라이언트가 재 요청시 객체는 남아 있다.)                        
                                                                           session.setAttribute("키",X) /// session.getAttribute("키") or ${ 키 }
                                                                           ex)로그인 정보, 장바구니
 #8 application 범위란? (다른 클라이언트에서 공유) : 모든 클라이언트에서 사용 가능
                                                          서블릿     >>   servletContext.setAttribute("키",X)
                                                                                servletContext.getAttribute("키")
                                                          JSP       >>      application.setAttribute("키",X)
                                                                                application .getAttribute("키")


% session과 request가 같은 이름일 때 ${같은이름}을 부르면 범위가 더 적은 것이 우선순위로 하여 나온다.

${키}   

# EL 은 page, request, session, application 의 순서대로 찾아온다


                         


<a>태그의 이벤트 처리

<a>태그의 onclick과 href를 사용 할 때 Tip

<onclick="link2Click()" href="content.jsp">링크2</a>
이렇게 쓰면 onclick과 href 중 누가 수행될까? -> onclick이  먼저 수행이 된다. 또한 조건에 따라 href의 실행 여부를 관장할 수 있다.(return false 사용 시)

예제 코드를 보자


<a onclick= "return link2Click()" href ="content.jsp"> 링크2</a >


function link2Click(){
  console.log( "link2Click() 실행" );
   return false //href가 수행되지 않도록 만든다 (무시함 onclick만 수행)
   return true ;  //href가 수행됨
          }


+ Recent posts