Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

brograming

로그인(세션과 쿠키)_Day31, Day32 본문

Kosta

로그인(세션과 쿠키)_Day31, Day32

brograming 2023. 3. 30. 16:43

세션과 쿠키

 

용도: 클라이언트에 대해서 유지해야 하는 정보 저장

         요청 한개에 필요한 정보는 request에 담고 로그아웃할때까지 유지해야 하는 정보는 session에 담는다

 

http프로토콜 : 연결 유지 안함.

방금 로그인 성공했다하더라도 기억을 못함.

억지로 기억하게끔 하는 것, 계속 연결이 유지 되는 것처럼 프로그래밍에 사용하는 객체가 세션과 쿠키

 

세션 : 서버에 저장. 객체 형태로 저장(오토박싱/오토 언박싱 이용). 크기에 제약 없음

 

쿠키 : 클라이언트 컴퓨터 저장. 데이터 유형 : 텍스트 형태로 저장. 크기에 제약이 있다. 저장할 수 있는 크기가 정해져 있음. 보안에 취약

 

scope 객체 : 정보를 담을 수 있는 jsp/servlet 내장 객체  => (page, request, session, application)

                    scope객체도 setAttribute(), removeAttribute(), getAttribute()를 갖는다.

                      request는 응답할때까지 정보유효. session은 로그아웃할때까지 정보 유효.

 

session을 사용하는 이유:로그아웃 할때가지 지속해야 하는 정보가 있을 때 사용.

                                          여러 기능, 여러 페이지에서 사용할 정보를 세션에 저장

                                          ex) 로그인 아이디, 멤버타입(판매자, 구매자), 등급

 

세션 트래킹 : 웹 어플리케이션에 첫 요청을 하면 세션 id발급(쿠키에 담아서)  

                      클라이언트는 매 요청시 request 헤더에 발급받은 session id를 담아서 보냄

 

 

세션

1. session 생성. => 세션은 자동 생성됨. 세션을 invalidate()해도 바로 새 세션이 생성된다.

jsp 페이지 : session 내장 객체 사용

servlet 페이지 : HttpSession session = request.setSession();

 

2. session에 정보 저장

session.setAttribute("이름, 값);

 

3. session에서 정보 꺼내기

jsp페이지 : ${sessionScope.이름}

servlet 페이지 : String val = (String)session.getAttribute("이름"); 객체타입으로 오기 때문에 원래 타입으로 다운캐스팅

 

4. 로그아웃

session.invalidate(); // 세션 무효화. 바로 새 세션이 생성

 

 

쿠키

1. 쿠키 생성 

Cookie c = new Cookie("키","값");

 

2. 생성한 쿠키를 response에 담는다.

response.addCookie(c);                           => c에 담긴 정보가 클라이언트에 저장

 

3. 다음 요청시 request에서 쿠키를 꺼냄

request.getCookies();                               => request에 담긴 전체 쿠키 읽음. 반환값은 쿠키 타입의 배열(Cookie[ ]). 자바로 읽을 때

 

* 쿠키 이름 : ${cookie.키.name } => name 속성(이름)        // jsp에서 읽을 때       c.getName()  // 자바로 읽을 때

* 쿠키 값 : ${cookie.키.value } => value 속성(값)       // jsp에서 읽을 때                c.getValue()  // 자바로 읽을 때

 

4. 쿠키값 수정 : 동일한 이름으로 새값으로 저장

Cookie c = new Cookie("변경할 쿠키 이름", "새값");

response.addCookie(c);

 

5. 쿠키 유효시간 설정

cookie.setMaxAge(60*60*24) => 유효시간 하루

 

6. 쿠키 삭제

cookie.setMaxAge(0);

 

 


세션

 

request.setAttribute("이름",값); : 뷰페이지에 가기전에 정보를 request에 담아 전달 / 한 요청이 응답을 보낼때까지 정보 살아있음

 

하나의 요청을 처리하기 위해 forward로 여러 페이지를 이동할 수 있음.

서버내에서 페이지 이동 : forward

하나의 요청(request)이 여러 페이지를 거쳐 응답페이지가 클라이언트한테 갈때까지 살아있지만 응답(response)이 가고 나면 정보는 사라짐.

새 요청을 보낼때 정보는 이미 없어져있다.


session.setAttribute("이름",값); : 마찬가지로 세션도 세션에 담아 전달  / 세션이 유효하지 않을때까지, 세션이 무효화될때까지 정보 살아있음

session에 담은 정보는 프로젝트 내의 모든 파일 사용 가능. 로그아웃하면 없어진다.

session.removeAttribute("이름"); // 세션에 저장한 정보 삭제

 

저장한 정보가 언제가지 유지가 되느냐에 따라 request를 쓸지, session을 쓸지 정해진다.

 

세션은 만들지 않아도 웹에 접속하면 자동으로 만들어짐.

//getSession(true) : 현재 사용중인 세션이 있으면 그 세션을 반환. 없으면 새로 생성해서 줌. 파라미터가 true


HttpSession session = request.getSession();

//getSession(true)  : 현재 사용중인 세션이 있으면 그 세션을 반환. 없으면 새로 생성해서 줌. 파라미터가 true

                                 true가 디폴트 파라미터이므로 파라미터 안넣으면 자동으로 true
//getSession(false) : 현재 사용중인 세션이 있으면 그 세션을 반환. 없으면 에러

 

session.setAttribute("param1", "value1"); 

//세션에 값 저장

//타입의 제약이 없으며 객체 형태로 저장됨

 

String val = (String) session.getAttribute("param1");

// 세션 값 가져올 때

 

String sessionId = session.getId(); 

//session id는 연결을 구분하는 고유한 값. 사람의 주민번호 같은 역할.
// 중복되지 않는 16진수 난수를 생성하여 클라이언트한테 쿠키에 담아서 준다.
// 클라이언트는 서버에 요청할때마다 헤더에 담아서 보냄.

 

session.invalidate();

 //로그아웃 처리. 세션 무효화

 

 

사용 파일 목록


쿠키

 

서블릿에서 출력

CookieTest.java
CookieRead.java
CookieTest 서블릿 실행 : 첫 번째줄은 sessionId.


jsp에서 출력

 

CookieTest.java 에서 

response.sendRedirect(request.getContextPath()+"/CookieRead");를
response.sendRedirect(request.getContextPath()+"/index.jsp");  로 idex.jsp로 이동하게끔 변경

CookieTest.java

 

index.jsp

 

CookieTest 서블릿 실행 / index.jsp로 이동 후 출력

 

 

 

사용 파일 목록

'Kosta' 카테고리의 다른 글

DispatcherServlet / commandHandler / commands.properties_Day38  (0) 2023.04.11
파일 다운로드_Day38  (0) 2023.04.11
[JAVASCRIPT]_Day25  (0) 2023.03.22
[JAVA, Oracle] 게시판 만들기_Day18  (0) 2023.03.09
[JAVA, Oracle] emp vo, dao, main Day16  (0) 2023.03.08