6월 15일 내용정리_1
1.세션(session)
쿠키의 단점: 보안 유지가 되지 않음. 저장할수 있는 데이터도 1.2MB로 한계
이러한 쿠키의 단점을 극복하기 위해서 나온 상태 유지 방법중의 하나가 세션(session)
세션(session)은 서버 상에 존재하는 객체로 브라우저 단위당 한개씩 존재한다. 웹브라우저를 닫기 전까지 페이지를 이동하더라도 사용자의 정보를 잃지 않고 서버에 보관할 수 있도록 하는 객체
2.세션(session) 장점
JSP(서버)에서만 접근 가능하므로 보안유지가 좋으며,
저장할 수 있는 데이터에 한계가 없음.
대표적인 활용예가 로그인 페이지
세션에 의해서 로그인 인증 처리를 하면 로그인 페이지를 사용할수 있는 권한상태가 유지되어 다른페이지를 갔다가 다시 돌아와도 다시 로그인을 하지 않고 로그인페이지를 사용 할 수 있다.
3.세션(session) 사용하는 메서드


4.상태 유지를 위한setAttribute(),getAttribute()
name과 value을 설정 :setAttribute("name","value");
name을 통하여 value을 불러온다:getAttribute("name");
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>세션에 값 설정하기</h1>
<%
session.setAttribute("id", "kimjava");
session.setAttribute("pwd", "1234");
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>세션에 값 가져오기</h1>
<%
String id=(String)session.getAttribute("id");
String pwd=(String)session.getAttribute("pwd");
%>
id:<%=id %><br>
pwd:<%=pwd %><br>
</body>
</html>
5.getAttributeNames()
세션에서 name을 Enumeration형(구조체)로 얻어옴.
참고로 Enumeration형은 여러개의 데이터를 집합처럼 관리하는 인터페이스 이다.
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>세션에 설정된 모든 값 가져오기</h3>
<%
Enumeration names = session.getAttributeNames();
while(names.hasMoreElements()){
String name=names.nextElement().toString();
String value=session.getAttribute(name).toString();
out.println(name+" : "+value+"<br>");
}
%>
</body>
</html>
5.세션(session) 객체
JSP내장 객체로 항상 존재하며,브라우저가 실행될 때 마다 서로 다른 세션이라는 것을 구분하기 위해서 고유의ID값을 저장한다.

6.세션제거 하기
removeAttribute():세션에 저장된 특정 Attribute값을 제거
invalidate():설정된 세션의 값들을 모두 제거, 해당 세션을 없애고 세션에 속해있는 값들을 제거한다.