본문 바로가기

서버/Servlet-JSP
JSP 내장 객체 - Session, Application

// Session

    - 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법   
    - 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지가 시점
    - 현재 사용자
    - 서버 상에 객체로 존재한다. 
        > 서버에셔만 접근이 가능하여 보안이 좋고, 저장할 수 있는 데이터에 한계가 없다.

    ~ getID() : 각 접속에 대한 세션 고유의 id를 문자열 형태로 반환
    ~ getCreationTime() : 세션이 생성된 시간을 밀리세컨드 값으로 반환
    ~ getLastAccessedTime() : 현재 세션으로 마지막 작업한 시간 반환(1970-01-01을 시작으로 하는 밀리초)
    ~ getMaxInactiveInterval() : 세션 유지 시간을 초로 반환
    ~ setmaxInactiveInterval(t) : 세션 유지 시간을 t에 설정된 초 값으로 설정(기본 타임아웃은 30분-1800초)
    ~ invaliate() : 현재 세션을 종료하고 세션과 관련된 값을 모두 삭제
    ~ getAttribute(attr) : 문자열 attr로 설정된 세션 값을 object 형태로 반환
    ~ setAttribute(name, attr) : 문자열 name으로 attr을 설정
    ~ removeAttribute(name) : 세션에 설정한 속성 값 삭제
    ~ invalidate(name) : 세션을 새것으로 교체(완전 초기화)
    ~ isNew() : 세션이 새로 생성되었는지 확인


<%@ 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>

	<%
		session.setAttribute("id", "sorrel012");
		session.setAttribute("pw", 1234);
	%>
	
	<a href="sessionget.jsp">session get.jsp</a>

</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="java.util.Enumeration"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<%
	
		if(request.isRequestedSessionIdValid()) {
			out.println("session valid<br>");		    
		} else {
		    out.println("session invalid<br>");
		}
	
		out.println("======================================================<br>");
	
		Object idObj = session.getAttribute("id");
		String id = idObj.toString();
		
		Object pwObj = session.getAttribute("pw");
		String pw = pwObj.toString();
		
		out.println("id = " + id + "<br>");
		out.println("pw = " + pw + "<br>");
		
		out.println("======================================================<br>");
		
		Enumeration<String> e1 = session.getAttributeNames();
		while(e1.hasMoreElements()) {
		    String name = e1.nextElement();
		    out.println("Attribute name : " + name + "<br>");
		}
		
		out.println("======================================================<br>");
		
		out.println("sessionID = " + session.getId() + "<br>");
		out.println("sessionInter = " + session.getMaxInactiveInterval() + "<br>");
		
		out.println("======================================================<br>");
		
		session.removeAttribute("pw");
		
		Enumeration<String> e2 = session.getAttributeNames();
		while(e2.hasMoreElements()) {
		    String name = e2.nextElement();
		    out.println("Attribute name : " + name + "<br>");
		}
		
		out.println("======================================================<br>");
		
		session.invalidate();		
		
		if(request.isRequestedSessionIdValid()) {
			out.println("session valid<br>");		    
		} else {
		    out.println("session invalid<br>");
		}		
		
	%>

</body>
</html>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="java.util.Calendar"%>
<%
    long tick = session.getCreationTime();
    Calendar time = Calendar.getInstance();
    
    time.setTimeInMillis(tick); //tick > Calendar
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>

</style>
</head>
<body>

    <h1>세션</h1>
    
    <h2>세션 정보 확인</h2>
    <div>Session ID: <%= session.getId() %></div>
    <div>Session Creation Time: <%= String.format("%tF %tT", time, time) %></div>
    <div>Session Max Inactive Interval: <%= session.getMaxInactiveInterval() %></div>
    <div>Session isNew: <%= session.isNew() %></div>
    
    <% if(session.getAttribute("data") != null) { %>
    <div>session.data: <%= session.getAttribute("data") %></div>
    <% } else { %>
    <div>session.data: 비었음</div>
    <% } %>
    
    
    <h2>세션 조작</h2>
    <a href="ex16_set.jsp">세션값 저장하기</a>
    <a href="ex16_del.jsp">세션값 삭제하기</a>
    <a href="ex16_reset.jsp">세션 초기화</a>
    <a href="ex16_interval.jsp">세션 만료 시간 지정</a>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>

</script>
</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>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>

</style>
</head>
<body>
    
    <h1>세션값 저장하기</h1>
    
    <%
        session.setAttribute("data", "홍길동");       
    
    %>
    
    <a href="ex16.jsp">돌아가기</a>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>

</script>
</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>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>

</style>
</head>
<body>

    <h1>세션값 삭제하기</h1>
    
    <%
        session.removeAttribute("data");
    %>
    
    <a href="ex16.jsp">돌아가기</a>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>

</script>
</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>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>

</style>
</head>
<body>

    <h1>세션 초기화</h1>
    
    <%
        //세션을 새것으로 교체(완전 초기화)
        session.invalidate();
    %>
    
    <a href="ex16.jsp">돌아가기</a>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>

</script>
</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>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>

</style>
</head>
<body>

    <h1>세션 만료 시간 교체</h1>
    
    <%
        //1800
        session.setMaxInactiveInterval(30);
    %>
    
    <a href="ex16.jsp">돌아가기</a>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>

</script>
</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>

	<form action="loginok.jsp" method="post">
		아이디: <input type="text" name="id"><br>
		비밀번호: <input type="password" name="pw"><br>
		
		<input type="submit" value="로그인">
	</form>

</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>

	<%
		String id = request.getParameter("id");	
		String pw = request.getParameter("pw");	
		
		if(id.equals("sorrel012") && pw.equals("1234")) {
		    session.setAttribute("id", id);
		    response.sendRedirect("loginsuccess.jsp");
		} else {
		    response.sendRedirect("login.jsp");
		}
	%>

</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>

	<%
		String id = session.getAttribute("id").toString();
	%>
	
	<h2><%=id %>님 안녕하세요.</h2>
	
	<a href="logout.jsp">로그아웃</a>
	
</body>
</html>

 

<%@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>

	<%
		Enumeration<String> e = session.getAttributeNames();
	
		while(e.hasMoreElements()) {
		    String name = e.nextElement();
		    String value = session.getAttribute(name).toString();
		    
		    if(value.equals("sorrel012")) {
		        session.removeAttribute(name);
		    }
		}
		
		response.sendRedirect("logoutsuccess.jsp");
	%>

</body>
</html>

 

<%@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>

	<%
		Enumeration<String> e = session.getAttributeNames();
		int i = 0;
		
		while(e.hasMoreElements()) {
		    i++;
		    out.println(e.nextElement());
		}
		
		if(i == 0) {		  	
	%> 
		<h2>로그아웃이 완료되었습니다.</h2>
		
		<%} %>

</body>
</html>

- application : javax.servlet.SerbletContext
    ~ setAttribute(name, value) : application 범위의 값 설정
    ~ getAttribute(name) : application 범위의 값 반환
    ~ getRealPath(path) : 실제 물리 경로 반환
    ~ getResource(path) : path 경로의 리소스를 가리키는 URL 반환
    ~ getServerInfo() : 현재 요청 방식이 GET인지 POST인지 문자열로 반환
    ~ getSession() : 현재 세션 객체 반환
    ~ getRemoteAddr() : 클라이언트의 IP 주소 반환
    ~ getProtocol() : 현재 서버의 프로토콜을 문자열로 반환
    ~ setCharacterEncoding() : 현재 JSP로 전달되는 내용을 지정한 문자셋으로 변환

'서버 > Servlet-JSP' 카테고리의 다른 글

[Servlet-JSP] Cookie  (0) 2023.01.15
[Servlet-JSP] Redirection  (0) 2023.01.13
JSP 내장 객체 - request, response, pageContext  (0) 2023.01.03
JSP 구성 요소 - 액션 태그  (0) 2023.01.03
JSP 구성 요소 - JSP 지시자  (0) 2023.01.01