Jsp,Servlet
JSP Servlet: 쿠키/세션 (cookie/session)
믿을수없는맛
2018. 12. 30. 16:06
반응형
쿠키 그리고 세션
쿠키와 세션을 하기전에 http프로토콜에 대해서 얘기 해봅시다.
우리가 웹을 이용할때 사용하는 프로토콜이 바로 http 프로토콜입니다.
http는 웹서버로 어떤 데이터를 요청하면 서버측에서 요청한것에 맞게 알맞은 로직을 수행한 후 결과를 다시 웹 브라우저로 응답합니다. 그리고 서버는 웹브라우저와의 관계를 종료하는데요.
이때 연결이 끊겼을 때 어떤 정보를 유지하기 위한 수단이 바로 쿠키와 세션 입니다.
쿠키의 특징
- 쿠키의 용량은 개당 4kb로 용량이 제한적이다.
- 쿠키는 300개까지 만들수있다.
쿠키 문법
1. 쿠키 메소드
- setMaxAge() : 쿠키 유효기간을 설정 합니다.
- setpath() : 쿠키사용의 유효 디렉토리를 설정 합니다.
- setValue() : 쿠키의 값을 설정 합니다.
- setVersion() : 쿠키 버전을 설정 합니다.
- getMaxAge() : 쿠키 유효기간 정보를 얻습니다.
- getName() : 쿠키 이름을 얻습니다.
- getPath() : 쿠키사용의 유효 디렉토리 정보를 얻습니다.
- getValue() : 쿠키의 값을 얻습니다.
- getVersion() : 쿠키 버전을 얻습니다.
2. 실습
<%@ 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>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
Cookie cookie = new Cookie("cookieN", "cookieV");
cookie.setMaxAge(60*60); //1시간
response.addCookie(cookie);
%>
<a href="cookieget.jsp">cookie get</a>
</body>
</html>
쿠키를 생성하고 setMaxAge를 통해 쿠키의 유효시간을 부여한다음
리스폰스 객체에 addCoolie메소드를 이용하여 쿠키를 저장합니다.
<%@ 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>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
Cookie[] cookies = request.getCookies();
if(cookies != null) {
for(int i=0; i<cookies.length; i++){
out.println(cookies[i].getName() + "<br />");
out.println(cookies[i].getValue() + "<br />");
}
}
%>
</body>
</html>
쿠키를 받을 때에는 위의 소스 처럼 반복문을 통해 데이터를 얻을수있습니다.
세션의 특징
- 쿠키와 달리 클라이언트측에 저장되는것이 아니라 서버상에 객체로 존재 합니다.
- 서버에서만 접근 가능하기 때문에 보안상 좋다.
- 데이터 한계가 없다. 한계가 없는 대신 서버의 성능을 고려하여 사용해야한다.
그런데 세션도 쿠키를 사용합니다. 세션ID값 만을 쿠키에 저장하여 저장되어있는 세션ID값을 가지고 브라우저를 구분하게됩니다.
세션 문법
1. 세션 메소드
- setAttribute() : 세션에 데이터를 저장 합니다.
- getAttribute() : 세션에서 데이터를 얻습니다.
- getAttributeNames() : 세션에 저장되어 있는 모든 데이터의 이름(유니크한 키값)을 얻습니다.
- getId() : 자동 생성된 세션의 유니크한 아이디를 얻습니다.
- isNew() : 세션이 최초 생성되었는지, 이전에 생성된 세션인지를 구분 합니다.
- getMaxInactiveInterval() : 세션의 유효시간을 얻습니다. 가장 최근 요청시점을 기준으로 카운트 됩니다. (C:\javalec\apache-tomcat-7.0.57\apache-tomcat-7.0.57\conf\web.xml 참조)
- removeAttribute() : 세션에서 특정 데이터 제거 합니다.
- Invalidate() : 세션의 모든 데이터를 삭제 합니다.
2. 실습
세션 설정방법
<%@ 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>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
session.setAttribute("mySessionName", "mySessionData");
session.setAttribute("myNum", 12345);
%>
<a href="sessionget.jsp">session get</a>
</body>
</html>
session.setAttribute(“저장할이름”,저장할 객체);
세션값 가져오기
<%
session.getAttribute("mySessionName");
session.getAttribute("myNum");
%>
여기서 중요한점은 getAttribute의 리턴 형태는 object 형태이기 때문에 캐스트를 해주어야합니다.
세션값이 여러개일 경우
<%
Enumeration enumeration = session.getAttributeNames();
while(enumeration.hasMoreElements()) {
i++;
String sName = enumeration.nextElement().toString();
String sValue = (String)session.getAttribute(sName);
out.println("sName : " + sName + "<br />");
out.println("sValue : " + sValue + "<br />");
}
%>
이번강의는 여기까지
반응형