19.05.05 Cookie & Session (책+동영상)
Back-End/JSP 2019. 5. 5. 13:12-쿠키란?-
서버측에서 사용자가 필요한 정보들를 담아서 "내 컴퓨터" 에 넘겨주는 것!
쿠키는 웹브라우저 자체의 쿠키 저장소에 저장.
(Response 객체에 쿠키값을 넘겨서 사용)
메소드 이름 |
설명 |
int getMaxAge( ) |
Cookie의 최대 지속시간을 초 단위로 지정합니다. -1일 경우 브라우저가 종료되는 쿠키를 만료 |
String getName( ) |
Cookie의 이름을 스트링 타입으로 반환 |
String getValue( ) |
Cookie의 값을 스트링 타입으로 반환 |
void setMaxAge(int expiry) |
Cookie의 만료시간을 초 단위로 설정합니다. |
void setValue(String newValue) |
Cookie에 새로운 값을 설정할 때 사용합니다. |
-예제 및 출력 결과-
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 |
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<%
//사용자 컴퓨터의 쿠키 저장소로부터 쿠키값을 읽어들임. 몇개인지 모르기에 배열을 이용하여 쿠키값을 저장
Cookie[] cookies = request.getCookies();
String id = "";
//쿠키값이 없을 수도 있기에 null 처리를 해줍니다.
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) //쿠키에 담긴값을 출력
{
if (cookies[i].getName().equals("id")) //쿠키에 담긴 값의 이름과 id가 같을때 실행
{
id = cookies[i].getValue();
break; //원하는 아이디를 찾았을때 멈춘다.
}
}
}
%>
<center>
<h2>쿠키 로그인</h2>
<form action="CookieLoginProc.jsp" method="post">
<table width="400" border="1">
<!-- 테이블을 생성 -->
<tr height="50">
<td width="150">아이디</td>
<td width="250"><input type="text" name="id" value="<%=id%>">
</td>
</tr>
<tr height="50">
<td width="150">패스워드</td>
<td width="250"><input type="password" name="pass"></td>
</tr>
<tr height="50">
<td colspan="2" align="center"><input type="checkbox"
name="save" value="1">아이디 저장</td>
</tr>
<tr height="50">
<td colspan="2" align="center"><input type="submit"
value="로그인"></td>
</tr>
</table>
</form>
</center>
</body>
</html> |
cs |
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 |
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<%
request.setCharacterEncoding("EUC-KR");
//아이디 저장 체크 박스가 체크되었는지 판단 여부
String save = request.getParameter("save");
//아이디 값을 저장
String id = request.getParameter("id");
//체크 되었는지 비교 판단
if(save != null) //아이디 저장이 눌렸다면
{
//쿠키를 사용하려면 쿠키클래스를 생성해 주어야 함.
Cookie cookie = new Cookie("id",id); //디폴트 쿠키는 없다 (값을 넣어야 한다.)
//1번째 String 키값을 적어줌
//2번째는 해당 value 값을 넘겨줌
//id 값을 id라는 이름으로 읽어들인다.
//쿠키 유효시간 설정
cookie.setMaxAge(60*3); //10분간 쿠키가 유효하다.
response.addCookie(cookie); //사용자에게 쿠키를 넘겨준다.
out.write("쿠키 생성완료");
}
%>
</body>
|
cs |
-Session 사용법-
사용자로부터 넘어온 클라이언트에 대한 정보를 서버측에서 저장하는 개념이다
세션을 사용하는 이유는 페이지가 바뀌어도 계속해서 데이터를 유지하고 싶을때 사용한다.
메소드 이름 |
리턴 타입 |
설명 |
getAttribute(String name) |
java.lang.Object |
세션 속성명이 name인 속성의 값을 Object 타입으로 리턴한다. 해당되는 속성명이 없을 경우에는 null 값을 리턴한다. |
getAttributeNames( ) |
java.util.Enumeration |
세션 속성의 이름들을 Enumeration 객체 타입으로 리턴한다. |
getCreationTime( ) |
long |
1970년 1월 1일 0시 0초를 기준으로 하여 현재 세션이 생성된 시간까지 경과한 시간을 계산하여 1/1000초 값으로 리턴한다. |
getld( ) |
java.lang.String |
세션에 할당된 고유 식별자를 String 타입으로 리턴한다. |
getMaxInactiveInterval( ) |
int |
현재 생성된 세션을 유지하기 위해 설정된 세션 유지시간을 int형으로 리턴한다. |
invalidate( ) |
void |
현재 생성된 세션을 무효화 시킨다. |
removeAttribute(String.name) |
void |
세션 속성명이 name인 속성을 제거한다. |
setAttribute(String name, Object value) |
void |
세션 속성명이 name인 속성에 속성값으로 value를 할당한다. |
setMaxInactiveInterval(int interval) |
void |
세션을 유지하기 위한 세션 유지시간을 초 단위로 설정한다. |
-Cookie와 Session의 차이-
구분 |
Cookie |
Session |
사용 class 및 Interface |
Cookie class |
httpSession Interface |
저장되는 값 |
문자열 형태만 저장 가능 |
자바에서 사용되는 모든 객체 저장 가능 |
저장 장소 |
클라이언트에 저장 |
SessionID만 클라이언트에 저장하고 실제적인 값은 서버에 저장 |
-예제 및 출력 결과-
로그인 페이지 (SessionLoginForm.jsp)
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
32 |
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<center>
<h2>세션 로그인</h2>
<!-- 쿠키는 아이디를 저장해서 읽어들일수 있지만 세션은 그럴수 없다. -->
<form action="SessionLoginProc.jsp" method="post">
<table width="400" border="1">
<!-- 테이블을 생성 -->
<tr height="50">
<td width="150">아이디</td>
<td width="250"><input type="text" name="id"></td>
</tr>
<tr height="50">
<td width="150">패스워드</td>
<td width="250"><input type="password" name="pass"></td>
</tr>
<tr height="50">
<td colspan="2" align="center"><input type="submit"
value="로그인"></td>
</tr>
</table>
</form>
</center>
</body>
</html> |
cs |
로그인을 처리하는 페이지 1 (request로 자료를 읽어들인다.) (SessionLoginProc.jsp)
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
32
33
34
35
36
37
38
39
40 |
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<center>
<h2>세션 로그인 처리 1</h2>
<%
request.setCharacterEncoding("EUC-KR"); //한글 깨짐을 방지하기 위해 문자셋 설정
//사용자로부터 데이터를 읽어들인다.
String id = request.getParameter("id"); //id와 pass를 각각 변수에 저장
String pass = request.getParameter("pass");
//아이디와 패스워드를 저장
session.setAttribute("id", id);
session.setAttribute("pass", pass);
//세션의 유지시간 설정
session.setMaxInactiveInterval(60);
%>
<h2>
당신의 아이디는
<%=id %>
입니다. 패스워드는
<%=pass %>
입니다.
</h2>
<!-- 아이디 출력 -->
<a href="SessionLoginProc2.jsp?id=<%=id %>&pass=<%=pass%>">다음페이지로
이동</a>
<!-- <a href="SessionLoginProc2.jsp?id=<%=id %>&pass=<%=pass%>">다음페이지로 이동</a> 이렇게 써도 값은 넘어가지만 패스워드가 url에 공개되서 보안상 문제가 있으므로 세션을 써야한다.-->
</center>
</body>
</html> |
cs |
로그인을 처리하는 페이지 2 (Session로 자료를 읽어들인다.) (SessionLoginProc2.jsp)
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 |
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<center>
<h2>세션 로그인 처리 2</h2>
<%
//세션에 저장되어 있는 아이디와 비밀번호를 각각 변수에 저장함 세션에서 출력할때는 오브젝트 타입이기 때문에 (타입변환 실시)
String id = (String) session.getAttribute("id");
String pass = (String) session.getAttribute("pass");
%>
<h2>
당신의 아이디는
<%=id%>
입니다.
</h2>
<h2>
당신의 비밀번호는
<%=pass%>
입니다.
</h2>
</center>
</body>
</html> |
cs |
'Back-End > JSP' 카테고리의 다른 글
19.05.06 파일 업로드 (0) | 2019.05.06 |
---|---|
19.05.05 커넥션풀을 사용한 데이터베이스 연결 (동영상) (0) | 2019.05.05 |
19.05.04 JSP와 데이터베이스 연동 -2 (동영상 30강~32강) (0) | 2019.05.04 |
19.05.03 JDBC로 데이터베이스 연동 (0) | 2019.05.03 |
JSP 웹소켓 채팅 (0) | 2019.05.03 |