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