1017 JSP

김강산·2022년 10월 17일
0

JSP

목록 보기
12/14

13장 Session

  1. 세션의 개요
  2. 세션 생성
  3. 세션 정보
  4. 세션 삭제
  5. 세션 유효 시간 설정
  6. [웹 쇼핑몰] 장바구니 페이지 만들기

학습 목표

  • 세션의 개념을 이해한다
  • 세션을 생성하는 방법을 익힌다
  • 세션 정보를 가져오는 방법을 익힌다
  • 세션을 삭제하는 방법을 익힌다
  • 세션 유효 시간을 설정하는 방법을 익힌다
  • 웹 쇼핑몰의 장바구니 페이지를 만든다

세션(Session)

  • 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법
  • 웹 서버에서만 접근이 가능하므로 보안 유지에 유리하면 데이터를 저장하는 데 한계가 없다
  • 세션은 오직 1. 웹 서버에 존재하는 객체2. 웹 브라우저마다 하나씩 존재하므로 웹 버서의 서비스를 제공받는 사용자를 구분하는 단위가 된다
  • 세션을 사용하면 클라이언트가 웹 서버의 세션에 의해 가상으로 연결된 상태가 된다
  • 3. 웹 브라우저를 닫기 전까지 웹 페이지를 이동하더라도 사용자의 정보가 웹 서버에 보관되어 있어 사용자 정보를 잃지 않는다
  • 서버 세션을 사용하면 클라이언트의 상태를 저장할 수 있음
  • 쿠키와의 차이점은 세션은 웹 브라우저가 아닌 서버에 값을 저장한다는 점
  • 웹 컨테이너에서 클라이언트의 정보를 보관 및 상태를 유지할 때 사용
  • 로그인한 사용자 정보를 유지하기 위한 목적
  • 클라이언트마다 세션이 생성
  • 웹 브라우저에 정보 보관 : 쿠키
  • 웹 컨테이너에 정보 보관 : 세션

쿠키 간단 설명

웹 페이지를 요청하면 JSESSIONID가 쿠키 안에 자동으로 생성되서 같이 요청한다
그래서 어떤 웹 페이지에서 요청을 하게되면 그게 어떤 브라우저인지 쿠키의 JSESSIONID를 확인해서
그 페이지에 요청 정보를 주게된다
웹 페이지마다 쿠키 저장소가 만들어져 있다

세션의 개요


자주 사용하는 것
이 3개는 꼭 기억할 것 (엄청 많이 사용한다)

  • setAttribute(String name, Object value) : 파라미터값 2개
  • getAttribute(String name) : setAttribute에서 Object로 가져오기 때문에 캐스팅을 해주어야 한다
  • Invalidate() : 세션을 삭제해주는 것

위 3개를 제외하고 잘나오는 것

  • getAttributeNames()
  • getCreationTime()
  • getId()
  • getLastAccessedTime()
  • getMaxInactiveInterval()

세션 생성

  • session 내장 객체의 setAttribute() 메소드를 사용
  • setAttribute() 메소드를 이용하여 세션의 속성을 설정하면 계속 세션 상태를 유지할 수 있다
  • 동일한 세션의 속성 이름으로 세션을 생성하면 마지막에 설정한 것이 세션 속성 값이 된다
  • 첫 번째 매개변수 name은 세션으로 사용할 세션 속성 이름을 나타내며, 세션에 저장된 특정 값을 찾아오기 위한 키로 사용
  • 두 번째 매개변수 value는 세션의 속성 값
    - 세션 속성 값을 Object 객체 타입만 가능하기 때문에 int, double, char 등의 기본 타입은 사용할 수 없음

session01.jsp
로그인을 위한 아이디 비밀번호 작성과 전송 버튼

session01_process.jsp
미리 설정된 아이디와 비밀번호를 쳐서 내가 친 아이디와 비밀번호가 같은지 확인하는 페이지

session02.jsp

application.getAttribute는 다른 브라우저에서도 아이디값을 가져와 볼수 있게 해주는 것

결과
세션확인을 눌러서 userID 와 userPW가 잘 나오는지 확인하는 페이지

session03.jsp
지금 사용하는 웹 브라우저의 세션ID값을 확인할 수 있는 페이지

지금 사용하는 웹 브라우저의 세션 속성 이름과 세션 속성 값을 확인하기 위해 작성한 코드

결과
이 결과 값이 크롬에서 서버에 요청했을때 새로생긴 세션ID이다 이 ID로 크롬에서 보낸것을 알 수 있다

sessionInfo.jsp
Date와 DateFormat을 사용해서 시간 값을 저장하고 Date 객체의 시간값을 지정한 양식으로 출력

결과
세션이 생성된 시간과 최근 접근 시간을 나타내준다
새로고침을 하게되면 최근 접근 시간이 현재 접근한 시간으로 바뀌는것을 볼 수 있다

Invalidate()을 이용한 방법
closeSession.jsp
세션을 삭제하는 방법

sessionInfo.jsp에 추가

sessionInfo.jsp에서 새로운 세션ID를 삭제하고 새로운 세션을 만들어준다
이렇게 되면 기존 세션정보가 사라지고 새롭게 생성되기 때문에 세션ID가 바뀐다

결과

web.xml 에서 설정
세션 유효 시간 설정 1) web.xml에서 설정 2) jsp에서 설정

1분 타이머를 주고 1분이 지나면 새롭게 세션id를 설정해준다
기본 설정이 30분이기 때문에 30분으로 적용해 놓는다

장바구니 만들기
ProductVO.java
추가
장바구니에 상품을 담은 개수를 확인하기 위해 새로운 필드를 생성한다

product.jsp
장바구니 버튼 만들기
상품 주문을 눌렀을때 장바구니로 넣어지게 만든다

body 안쪽을 document라고 하고 addForm은 form안쪽에 있는 addForm값을 가져온다

addCart.jsp

cart.jsp
장바구니 상세페이지를 만든다

상품 개개인에 삭제버튼을 만들어서 그 상품만 삭제 할수 있게 만든다

총액을 보여주는 기능을 구현한다
상품 금액을 누적시키기 위해서 위if문 위에

작성

결과

removeCart.jsp
장바구니에 상품을 한개씩 삭제하는 페이지

deleteCart.jsp
장바구니를 한번에 삭제하는 페이지

전체 삭제를 하게되면 sessionId가 값이 바뀐다

0개의 댓글