IT 공부/JSP

Session

toraa 2022. 8. 2. 12:44

세션(session) 내장객체

. 쿠키 : 사용자 정보파일이 클라이언트에 저장되는 데이터
. 세션 : 사용자 정보파일이 웹컨테이너(서버)에 저장되는 데이터

. 웹 어플리케이션이 실행되는 동안 사용자가 웹 어플리케이션의 데이터를 
   가져와 확인할 수 있는 권한을 부여하기 위해 사용한다.
. 생성
  - 클라이언트가 서버에 접속할 때, 클라이언트별로 세션이 자동으로 생성된다.
  - 고유한 ID발생(세션아이디) -- > 클라이언트 전송 -- > 세션ID 이용해서 접속
. 특징
  - 각 클라이언트에게 고유한 ID부여
  - 세션ID로 클라이언트를 구분해서 클라이언트의 요구에 맞는 서비스를 제공
  - 보안면에서 쿠키에 비해 우수
  - 사용자가 많아질수록 서버의 메모리를 많이 차지하게 된다.
  - 세션 : 보안상 중요한 작업을 주로 수행
  - 쿠키 : 장바구니, 자동로그인, 아이디와 비번을 저장해 놓으시겠습니까? 등에 활용

. 메소드
  - getID() : 세션별로 고유하게 부여된 ID를 반환
  - getMaxInterval(long) : 유효시간을 초단위로 지정 (web.xml에서는 분단위)
  - invalidate() : 세션삭제
  - setAttribute(), getAttribute() : 세션값 저장,읽기


session1

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" session="true"%> <!-- session=true():자동생성/false():수동생성 -->
<%@ page import="java.util.Date, java.text.SimpleDateFormat" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>세션 아이디,생성시간,최종접근시간</title>
</head>
<body>
	<% 
		Date c_time = new Date();
		Date m_time = new Date();
		
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		c_time.setTime(session.getCreationTime());    //최초 세션생성 시간
		m_time.setTime(session.getLastAccessedTime()); //마지막 접속시간
	%>
	<h3>
		세션 아이디: <%=session.getId() %><br>
		세션 생성시간: <%=formatter.format(c_time) %><br>
		세션 최종접근시간: <%=formatter.format(m_time) %>
	</h3>

</body>
</html>

session2

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" session="true"%>
    
<%
	session.setAttribute("NAME","서대길");
	session.setAttribute("ADDRESS","서울");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>세션 속성 설정</title>
</head>
<body>
	<h3>세션 속성이 설정되었습니다.<br><br>
		<a href="session2_view.jsp">여기를 클릭ㅇㅅㅇ</a>
	
	</h3>
</body>
</html>

session2_view

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>세션속성 view</title>
</head>
<body>
	<h3>
		Name : <%= session.getAttribute("NAME") %><br>
		Address : <%=session.getAttribute("ADDRESS") %>
	</h3>
</body>
</html>

 


세션 삭제
. invalidate()
. 유효시간을 설정해서 자동으로 삭제

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	session.invalidate();	//삭제

%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>세션 삭제</title>
</head>
<body>
	<h3>
		세션이 삭제되었습니다<br>
		<a href="session2_view.jsp">여기를 클릭!ㅇㅅㅇ</a>
	</h3>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	session.setMaxInactiveInterval(60*60*24); //60초*60초*24시간
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>세션 삭제</title>
</head>
<body>
	<h3>
		세션이 삭제되었습니다<br>
		<a href="session2_view.jsp">여기를 클릭!ㅇㅅㅇ</a>
	</h3>
</body>
</html>

로그인

session5_form

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" session="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 폼</title>
</head>
<body>
	<form action="session5_Do.jsp" method="post">
		아이디 : <input type="text" name="id"><br>
		비밀번호 : <input type="password" name="pw"><br><br>
		
		<input type="submit" value="로그인">
	
	</form>
</body>
</html>

session5_Do

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>admin 로그인</title>
</head>
<body>
	<%
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		
		if(id.equals("admin") && pw.equals("1234")){
			session.setAttribute("LOGIN", "id");
			out.print("<h2>로그인성공</h2>");
			out.print("<a href='session5_logincheck.jsp'>메인페이지로 ㅎㅅㅎ</a>");
		}else{
			out.print("<h2>로그인 실패</h2>");
			out.print("<a href='session5_logincheck.jsp'>메인페이지로 ㅎㅅㅎ</a>");
		}
	%>

	
</body>
</html>

session5_logincheck

<%@ 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>	
	<%
		String id = (String)session.getAttribute("LOGIN");
		boolean isLogin = false;
		
		if(id != null) isLogin = true;
		if(isLogin) out.print("<h2>"+id+"님이 로그인 상태입니당</h2>");
		else out.print("<h2>로그아웃 상태입니당</h2>");
	%>
	
</body>
</html>