반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Spring
- Servelt
- #jsp
- ServletConfig
- #페이지이동
- Spring Boot
- ServletContextListener
- MVC
- spring security
- 서블릿
- Container
- oauth
- tomcat
- @PathVariable
- 확장자 사라짐
- servlet
- 디자인패턴
- #java
- 데이터 공유
- 한글 처리
- 점사라짐
- jsp
- #sendRedirect()
- 서블릿 초기화 파라미터
- 웹 어플리케이션 감시
- spring5
- servletContext
Archives
- Today
- Total
Choi의 고유결계
JSP Servlet: 쿠키/세션 (cookie/session) 본문
반응형
쿠키 그리고 세션
쿠키와 세션을 하기전에 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 />");
}
%>
이번강의는 여기까지
반응형
'Jsp,Servlet' 카테고리의 다른 글
JSP Servlet: 액션태그 (0) | 2018.12.30 |
---|---|
[java에서 MongDB 사용하기] - 1. 몽고디비 연결하기 (0) | 2018.11.28 |
JSP Servlet: response.sendRedirect() 사용시 주의 해야할 점 (0) | 2018.11.28 |
JSP Servlet: 웹어플리케이션 감시: ServletContextListener (0) | 2018.09.29 |
JSP Servlet: 데이터 공유 : ServletContext (0) | 2018.09.29 |
Comments