티스토리 뷰

반응형


개발일지 26일차(2018-08-13)

전체 목록, 진행 상황 보기 : 링크 

view_source_code : 소스보기



 java web application 이동 방식 


  : Servlet에서 servlet , jsp 에서 jsp, servlet 에서 jsp 모두 포함 

  1) forward 방식 

  : client는 이동 여부를 알 수 없고, 웹 컨테이너 상에서 이동된다. 

  기존 request 와 response가 유지된다. 

  forward 방식에서는 주로 request의 setAttribute(name,value) 를 통해 

  Controller 가 view 에 정보를 공유한다. 

  사용자가 재요청을 할 경우 ( 새로고침 )

  기존 request가 유지되므로 재동작을 한다. (정보 생성, 수정 삭제에는 적합하지 않다.)

  2) redirect 방식 

  : 서버(controller)에서 클라이언트에게 특정 url로 이동하여 응답받을 것을 지정하는 방식 

  forward와 다르게 url이 변경되고 request와 response는 유지되지 않는다. 

  (정보 생성, 수정, 삭제시 용이하다.)

 

 Session 과 Cookie 


 : 사용자 상태 정보를 일정 조건동안 유지 

 Http는 stateless 한 특성을 가진다. 

 즉 사용자에 대한 상태정보를 유지하지 않는다.

 이유는 서버의 자원을 절약하기 위해서이다. 

 

 Seesion과 Cookie는 이러한 Http적 특성을 보완하기 위한 기술이다. 


 1) Cookie : 사용자 상태 정보를 클라이언트 측에 저장 

    상태 정보를 클라이언트 측에 저장하기에 데이터 타입 및 용량이 제안이 있다. 

    쿠키 생성 후 전송시에 유효시간을 정할 수 있다. 

  ex - cookie.setMaxAge(60)초 동안 유지 

  만약 유효시간을 정하지 않으면 브라우저 실행시에만 유지 

  참고 ) 쿠키 삭제는 cookie.setMaxAge(0) 을 실행하면 된다. 

   

 2) HttpSession : 사용자 상태 정보를 서버  측에 저장 

      상태 정보를 서버측에 저장하기에 데이터 타입 및 용량의 제한이 없다. 

      

    request.getSession() or request.getSession(true)

    : 기존 세션이 있으면 세션을 반환하고 없으면 새로 세션을 생성 

    

    request.getSession(false)

    : 기존 세션이 있으면 기존 세션을 반환하고 

    없으면 null 을 반환 

 세션 관련 주요 메서드 

 session.setAttribute(name , value) : 세션에 특정 정보를 저장 

 ex ) 로그인 인증시 아이디와 패스워드가 데이터베이스 정보와 일치하면 회원정보를 session에 저장할 때 위 메서드를 사용한다.

 session.getAttribute(name) : Object 

 세션에 저장된 특정 정보를 반환받을 때 사용한다.

 

 session.removeAttribute(name) : 세션에 저장된 특정 정보를 삭제할 때 사용 

 session.invalidate() : 세션 무효화, 즉 사용하지 못하도록 한다. 

 ex) 로그아웃 사용할 때 사용 

 

 HttpSession 실행 흐름 

     WAS(Web Container)

 client browser -- request -->  if(아이디, 패스워드 일치하면)

  request.getSession() 실행

  세션이 있으면 기존세션 반환,

  없으면 새로 생성한다.

  서버상에 저장되어 있는 세션 정보와 

  클라이언트 쿠키에 있는 세션 아이디 정보를 비교해 

  기존 세션 존재 유무를 판단한다.

  먄약 처음 요청(로그인)일 경우 즉 세션이 없을 경우에는 클라이언트 측으로 

  발급한 세션 아이디 정보를 쿠키로 전송시킨다.

 

  만약 로그인 작업이면 이 시점에 database로 부터 조회한 회원정보를 

  session 에 setAttribute(name,value) 메서드로 할댕해야 한다.

 

  -- response --- 처음으로 세션을 생성했을 때는 

  위 설명대로 세션아이디를 쿠키로 전송 

 

 인증받은 회원만 접속할 수 있는 서비스 (ex - 카페 or 매일 )

  WAS(Web Container)

 client --- request ---- HttpSession session = request.getSession(false);

  if(session!=null){ // 기존 세션이 없으면 null 반환 

  Member member = (Member)session.getAttribute("mvo");

  if(member!=null){ // 로그인시 할당한 인증정보

  카페 or 메일 서비스를 제공 

  }

  }   

   

                      

                   

                   

                   

반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크