12월 5일 Day36

여우·2022년 12월 5일
0

공부중

목록 보기
29/38

Session

  1. session 이란?
  • 클라이언트 마다 서로 다른 정보를 저장할 수 있는 서버 저장소
  • 서버에 접속한 클라이언트의 수 만큼 세션을 생성해야 할 수도 있다
  • 세션에 유효시간을 설정하여 일정 시간 이후 자동으로 로그아웃을 구현할 수 있다
  • 서버에는 다수의 세션이 있어서, 이를 구분하기 위한 id가 있다

session 쿠키를 활용한 자동로그인 구현

  1. 자바 리소스에 Member 클래스및 Handler 클래스 생성


자바빈즈 규칙으로 멤버필드와 기본생성자 그리고 게터 세터즈를 생성해줍니다.


handler에서는 먼저 객체를저장할 배열과 해당객체를 찾아서 반환하는 로그인 함수를 구현해줍니다.

  1. login-form 작성

로그인 페이지에서는 아이디 및 비밀번호를 입력 받아서 action form으로 넘겨줍니다.

  1. action페이지 작성

    먼저 핸들러를 사용하기위해 application에 저장된 handler 객체를 불러옵니다. 한번도 등록된적이 없는 처음이라면 handler 객체를 저장하고 application에 저장해줍니다.
    그리고

form에서 넘어온 데이터를 바탕으로 useBean을 이용하여 Member타입의 객체를 생성해줍니다.
생성된 객체는 handler의 login 함수의 매개 변수로 전달되어 일치하는 객체가 존재한다면 해당 객체를 반환하고, 없다면 null을 반환합니다. 그리하여 함수 결과가 null이면 다시 로그인 페이지로 리다이렉트 시켜주고 아니라면 session에 해당객체를 login이라는 이름으로 등록해줍니다. 만약 자동 로그인이 체크된 체로 넘어왔다면 쿠키에 현재 session id를 JSESSION이라는 이름으로 저장해주고 유효시간은 하루로 설정해주고 main 페이지로 리다이렉트 시켜 줍니다.

  1. main 페이지 작성

먼저 스크립틀릿에서는 로그인페이지를 통하지 않고 바로 main으로 넘어왔을 경우를 대비하여 login 정보가 없다면 로그인페이지로 리다이렉트 시켜주도록 하고 login 정보가 존재 한다면 현재 로그인 객체의 이름을 보여줍니다.

  1. logout 페이지 작성

    로그아웃을 할때는 해당 session을 무효화 시키는 invalidate() 함수를 실행하고 로그인 페이지로 리다이렉트 시켜 줍니다.

  2. 자동 로그인 설정

    저장된 쿠키들중 JSESSION 이라는 이름으로 저장된 쿠키가 있다면 해당 쿠키에 저장된 session값을 불러와줍니다. getSession(cookie 안의 getValue()함수를 통해 그 값을 가져와서 ) session에 저장해줍니다.

HttpSession new Session = request.getSession();은 현재 요청과 연관된 session이 있다면 해당 세션을 반환하고 없다면 새로운 session을 생성해줍니다.

그리고 세션쿠키가 존재한다면 (!=null) 로그인페이지로 접속을 하여도 main 페이지로 리다이렉트 시켜줍니다.

profile
우당탕탕 지금은 개발중

0개의 댓글