μΈμ (Session)
μΈμ μ΄λ? (session)
: ν΄λΌμ΄μΈνΈμ μΉ μλ² κ°μ μνλ₯Ό μ§μμ μΌλ‘ μ μ§νλ λ°©λ²
μΈμ μ μ¬μ©νλ μ£Όμ κΈ°λ₯
β’
μ¬μ©μ μΈμ¦ λ° λ‘κ·ΈμΈ κ΄λ¦¬
β’
μ₯λ°κ΅¬λ λ° μ£Όλ¬Έ μ²λ¦¬
μΈμ μλͺ μ£ΌκΈ°
μΈμ
μ ν΄λΌμ΄μΈνΈκ° μ¬μ΄νΈμ μ μν μκ°λΆν° λΈλΌμ°μ λ₯Ό μ’
λ£νλ μμ κΉμ§ μ μ§λ©λλ€.
β’
λ‘κ·ΈμΈ μ 보λ μΈμ
μ λ±λ‘λκΈ° λλ¬Έμ λ‘κ·ΈμΈ ν λΈλΌμ°μ μ λͺ¨λ νμ μ’
λ£νκ³ λ€μ μ¬μ΄νΈμ μ μνλ©΄ λ‘κ·Έμμμ΄ λμ΄ μλ κ²μ λ³Ό μ μμ΅λλ€.
β’
ν¬λ‘¬ λΈλΌμ°μ μ κ²½μ°, μ μν¬λ¦Ώ μ°½μ μ΄λ©΄ λ³λμ μλ‘μ΄ μΈμ
μΌλ‘ ν
μ€νΈ ν΄λ³Ό μ μμ΅λλ€.
(β¦ > μ μν¬λ¦Ώ μ°½ (Ctrl + Shift + N)
1.
μμ± (Creation)
: ν΄λΌμ΄μΈνΈκ° μΉ μ ν리μΌμ΄μ
μ μ΅μ΄λ‘ μ μνλ©΄, μλ²λ ν΄λΉ ν΄λΌμ΄μΈνΈλ₯Ό μν μλ‘μ΄ μΈμ
μ μμ±ν©λλ€. μ΄λ κ³ μ ν μΈμ
μλ³μ(ID)κ° μμ±λκ³ , μ΄ IDλ₯Ό μ¬μ©νμ¬ μΈμ
μ μλ³ν©λλ€.
2.
νμ±ν (Activation)
: μΈμ
μ΄ μμ±λλ©΄ νμ± μνκ° λλ©°, ν΄λΌμ΄μΈνΈμ μλ² κ°μ λ°μ΄ν° κ΅νμ νμ©ν©λλ€. ν΄λΌμ΄μΈνΈκ° μΉ μ ν리μΌμ΄μ
μ μμ²μ λ³΄λΌ λλ§λ€ μΈμ
μ νμ±ν μνλ₯Ό μ μ§ν©λλ€.
3.
λΉνμ±ν (Inactivation)
: μΈμ
μ μΌμ μκ° λμ νμ±ν μνλ₯Ό μ μ§ν ν, ν΄λΌμ΄μΈνΈμ μμ²μ΄ μμ κ²½μ° λΉνμ±ν μνλ‘ μ νλ©λλ€. μ΄λ, μΈμ
μ λ©λͺ¨λ¦¬μμ ν΄μ λμ§ μκ³ , μ¬νμ±νλ λκΉμ§ λκΈ°ν©λλ€.
4.
μ’
λ£ (Expiration)
: μΈμ
μ΄ λ§λ£λλ©΄ μ’
λ£λ©λλ€. λ§λ£λ λ κ°μ§ λ°©λ²μΌλ‘ λ°μν μ μμ΅λλ€. 첫 λ²μ§Έ λ°©λ²μ μΈμ
μ λ§λ μΉ μ ν리μΌμ΄μ
μ μ€μ μ μ§μ λ μκ°(μΈμ
νμμμ)μ΄ κ²½κ³Όν κ²½μ°μ
λλ€. λ λ²μ§Έ λ°©λ²μ μΈμ
μ νλ‘κ·Έλλ°μ μΌλ‘ 무ν¨ν(invalidate)νλ κ²½μ°μ
λλ€.
5.
κ°μ μ’
λ£ (Forced Termination)
: μΉ μ ν리μΌμ΄μ
κ°λ°μλ κ΄λ¦¬μκ° νμν κ²½μ° μΈμ
μ μ§μ 무ν¨νν μ μμ΅λλ€. μ΄λ‘ μΈν΄ μΈμ
μ μ¦μ μ’
λ£λλ©°, ν΄λΌμ΄μΈνΈλ λ€μ μΈμ
μ μμ±ν΄μΌ ν©λλ€.
μΈμ λ΄μ₯ κ°μ²΄μ μ£Όμ λ©μλ
λ©μλ | μ€λͺ
|
getAttribute(String name) | μΈμ
μμ νΉμ μμ±μ κ°μ κ°μ Έμ΅λλ€. |
setAttribute(String name, Object value) | μΈμ
μ μλ‘μ΄ μμ±μ μ€μ νκ±°λ κΈ°μ‘΄ μμ±μ κ°μ μ
λ°μ΄νΈν©λλ€. |
removeAttribute(String name) | μΈμ
μμ νΉμ μμ±μ μ κ±°ν©λλ€. |
getId() | νμ¬ μΈμ
μ κ³ μ ν μλ³μ(ID)λ₯Ό λ°νν©λλ€. |
setMaxInactiveInterval(int interval) | μΈμ
μ λΉνμ± μκ° μ νμ μ€μ ν©λλ€. |
getMaxInactiveInterval() | μΈμ
μ λΉνμ± μκ° μ νμ λ°νν©λλ€. |
invalidate() | νμ¬ μΈμ
μ 무ν¨νμν€κ³ μΈμ
μ λͺ¨λ μμ±κ³Ό λ°μ΄ν°λ₯Ό μμ ν©λλ€. |
isNew() | νμ¬ μΈμ
μ΄ μλ‘ μμ±λμλμ§ μ¬λΆλ₯Ό νμΈν©λλ€. |
getCreationTime() | μΈμ
μ΄ μμ±λ μκ°μ λ°νν©λλ€. |
getLastAccessedTime() | μΈμ
μ λ§μ§λ§μΌλ‘ μ‘μΈμ€ν μκ°μ λ°νν©λλ€. |
μΈμ μμ±
session.setAttribute("userId", userId);
Java
볡μ¬
μΈμ μ 보
β’
λ¨μΌ μΈμ
μ 보
session.getAttribute("userId");
Java
볡μ¬
β’
λ€μ€ μΈμ
μ 보
Enumeration en = session.getAttributeNames();
int i = 0;
while (en.hasMoreElements()) {
i++;
name = en.nextElement().toString(); // μΈμ
μμ±μ΄λ¦ κ°μ Έμ€κΈ°
value = session.getAttribute(name).toString(); // μΈμ
μμ±κ° κ°μ Έμ€κΈ°
out.println("μ€μ λ μΈμ
μ μμ± μ΄λ¦ [ " + i + " ] : " + name + "<br>");
out.println("μ€μ λ μΈμ
μ μμ± κ° [ " + i + " ] : " + value + "<br>");
out.println("----------------------------------------------<br>");
}
Java
볡μ¬
μΈμ μμ
β’
λ¨μΌ μΈμ
μμ
session.removeAttribute("userId");
Java
볡μ¬
β’
λ€μ€ μΈμ
μμ
session.invalidate();
Java
볡μ¬
β’
μΈμ
μ ν¨ μ¬λΆ νμΈ
// isRequestedSessionIdValid
// : ν΄λΉ μμ²μ΄ μν session μ΄ μ ν¨νμ§ μ¬λΆλ₯Ό λ°ννλ λ©μλ
if (request.isRequestedSessionIdValid() ) {
out.print("μΈμ
μ΄ μ ν¨ν©λλ€.");
} else {
out.print("μΈμ
μ΄ μ ν¨νμ§ μμ΅λλ€.");
}
Java
볡μ¬
μΈμ μ ν¨ μκ°
β’
μΈμ
μ ν¨μκ° νμΈ
// getMaxInactiveInterval()
// : μΈμ
μ μ ν¨μκ°μ λ°ννλ λ©μλ
int time = session.getMaxInactiveInterval() / 60;
out.println("μΈμ
μ ν¨ μκ° : " + time + "λΆ<br>");
Java
볡μ¬
β’
μΈμ
μ ν¨μκ° μ€μ
// setMaxInactiveInterval()
// : μ΄ λ¨μλ‘ μΈμ
μ μ ν¨μκ°μ μ€μ νλ λ©μλ
session.setMaxInactiveInterval(60 * 60); // μ ν¨μκ° 60 λΆμΌλ‘ μ€μ
Java
볡μ¬
μΈμ μ 보 λ±λ‘νκΈ°
β’
session01.jsp
β’
session01_pro.jsp
β’
session01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>μΈμ
</title>
</head>
<body>
<h1>μΈμ
</h1>
<form action="session01_pro.jsp" method="post">
<p>μμ΄λ : <input type="text" name="username"/></p>
<p>λΉλ°λ²νΈ : <input type="password" name="password"/></p>
<p>
<input type="submit" value="λ‘κ·ΈμΈ" />
</p>
</form>
</body>
</html>
HTML
볡μ¬
β’
session01_pro.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>μΈμ
λ‘κ·ΈμΈ</title>
</head>
<body>
<!-- μΈμ
λ±λ‘νλ κ³Όμ -->
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
if( username.equals("joeun") && password.equals("123456") ) {
// μμ΄λ, λΉλ² μΌμΉ -> μΈμ¦(λ‘κ·ΈμΈ) μ±κ³΅
// -> μΈμ
μ μ¬μ©μ μ 보 λ±λ‘
session.setAttribute("username", username);
session.setAttribute("password", password);
out.println("μΈμ
μ€μ μ±κ³΅! (λ‘κ·ΈμΈ μ±κ³΅)");
out.println(username + "λ νμν©λλ€.");
}
else {
out.println("μΈμ
μ€μ μ€ν¨! (λ‘κ·ΈμΈ μ€ν¨)");
}
%>
<a href="<%= request.getContextPath() %>/session02.jsp">session02.jsp</a>
</body>
</html>
Java
볡μ¬
μΈμ μ 보 κ°μ Έμ€κΈ°
β’
session02.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>μΈμ
μ 보 κ°μ Έμ€κΈ°</title>
</head>
<body>
<h1>μΈμ
μ 보 κ°μ Έμ€κΈ°</h1>
<%
String username = (String) session.getAttribute("username");
String password = (String) session.getAttribute("password");
out.println("μΈμ
μ 보 - username : " + username);
out.println("μΈμ
μ 보 - password : " + password);
%>
<div>
<a href="<%= request.getContextPath() %>/session03.jsp">session03.jsp</a>
</div>
</body>
</html>
HTML
볡μ¬