<세션과 쿠키>
Http 프로토콜: stateless, 무상태, 이전 것을 기억할 필요가 없는
-> 사용자 브라우저와 서버 간의 상태에 대한 보존 없이 매 순간 새로운 연결하기 때문에 request-response과정이 끝나면 모든 연결이 끊어진다.
===> 상태 보존: 세션 / 쿠키
-세션
: 클라이언트에서 서버로 요청을 보내면, 서버는 해당 클라이언트가 보낸 요청에 함께 들어 있는 클라이언트의 정보를 갖고 있다가 동일 클라이언트로부터 또 다른 요청이 오면 이미 가지고 있던 정보를 비교해 동일 브라우저인지 판단한다.
즉, 서버가 자신에게 접속한 클라이언트의 정보를 갖고 있는 상태를 '세션'이라고 한다. (서버에 정보 저장)
*세션을 생성하면 쿠키는 자동으로 발급된다.
-쿠키
: 클라이언트에게 정보를 저장한다. 동일 클라이언트로부터 요청이 온 경우 쿠키가 담아 놓은 정보를 포함하고 있다면 요청 속 포함된 쿠키를 읽어 이전에 요청을 했던 클라이언트인 지를 판단한다.(클라이언트 측에 정보 저장)
값 저장 | 어디에 | 보관기간 | 보안 | 용도 | |
세션 | O | 서버 | 수 분 ~ 수 시간 | 강 | 로그인/아웃 |
쿠키 | O | 클라이언트 | 수시간 | 약 | 인증 -> 단순 값 저장(방문 기록 등) |
<쿠키 클래스>
-쿠키 전송
1)쿠키 생성
Cookie myCookie = new Cookie("cookiename", "value")
2)쿠키 설정
myCookie.setValue("value")
myCookie.setMaxAge(int expirysec)
*쿠키의 이름에 대응하는 값을 새로 지정할 때
*초 단위로 쿠키의 수명주기를 설정할 때
3)쿠키 전송
response.addCookie(myCookie)
-쿠키 사용
1)쿠키 획득
Cookie[] cookies = request.getCookies()
*쿠키는 항상 배열로 받는다. 모든 쿠키를 일일이 다 꺼내 myCookie와 같은 이름을 찾기 때문이다.
2)쿠키 이름(쿠키의 이름과 값은 하나의 세트) 읽기
cookies[i].getName()
3)이름을 통해 설정된 값 추출
cookies[i].getValue()
<예제>
1
2
3
4
5
6
7
8
9
10
11
12
13
|
</head>
<%
String cookieName = "myCookie";
Cookie cookie = new Cookie(cookieName, "Apple");
cookie.setMaxAge(60); // one minute
cookie.setValue("melon");
response.addCookie(cookie);
%>
<body>
<h1>Example Cookie</h1>
쿠키를 만듭니다.<br/>
</body>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
쿠키 전송 페이지
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<title>Taste Cookie</title>
</head>
<body>
<h1>Example Cookie</h1>
<%
Cookie[] cookies = request.getCookies();
if(cookies != null) {
for(int i = 0; i < cookies.length; ++i) {
if(cookies[i].getName().equals("myCookie")) {
%>
Cookie Name: <%= cookies[i].getName() %><br/>
Cookie Value: <%= cookies[i].getValue() %><br/>
<%
}
}
}
%>
</body>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
쿠키 사용 페이지
-실행
<세션 사용 예제>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<title>세션사용예제(세션생성)</title>
</head>
<body>
<%
String id = "rorod";
String pwd = "1234";
session.setAttribute("idkey", id);
session.setAttribute("pwdKey", pwd);
%>
세션이 생성되었습니다.<br/>
</body>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
세션 생성 및 속성 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<title>세션사용예제(세션확인)</title>
</head>
<body>
<%
Enumeration en = session.getAttributeNames();
while(en.hasMoreElements()) {
String name = (String)en.nextElement();
String value = (String)session.getAttribute(name);
out.println("session name: " + name + "<br/>");
out.println("session value: " + value + "<br/>");
}
%>
</body>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
세션 확인
-실행
'20.03 ~ 20.08 국비교육 > JSP' 카테고리의 다른 글
세션 사용 로그인 예제 (0) | 2020.05.06 |
---|---|
쿠키 사용 로그인 예제 (0) | 2020.04.29 |
JSP와 데이터베이스 연동 3. ConnectionPool을 사용한 연동 (0) | 2020.04.28 |
JSP와 데이터베이스 연동 2. 자바빈즈를 이용한 연동 (0) | 2020.04.28 |
JSP와 데이터베이스 연동 1. 스크립트릿으로의 연동 (0) | 2020.04.28 |