๐ก ํ์ต ๋ชฉํ
1. ์ฟ ํค์ ์ธ์
์ ๊ฐ๋
๊ณผ ์ฐจ์ด์ ์ ์ดํดํ๋ค.
2. JSP์์ ์ฟ ํค์ ์ธ์
์ ์ค์ ํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ตํ๋ค.
3. ์น ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ด
์ฟ ํค ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฒ
์ฟ ํค(Cookie)
์น ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ ์์ ๋ฐ์ดํฐ ์กฐ๊ฐ์ ๋๋ค.
์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ฟ ํค๋ฅผ ์ค์ ํ ์ ์์ผ๋ฉฐ, ์ดํ ํด๋ผ์ด์ธํธ๋ ํด๋น ์ฟ ํค๋ฅผ ์๋ฒ๋ก ์ ์กํฉ๋๋ค.
์ฟ ํค๋ ์ฃผ๋ก ์ฌ์ฉ์ ์๋ณ, ์ํ ์ ์ง, ๊ฐ์ธ ์ค์ ๋ฑ์ ์ฌ์ฉ๋ฉ๋๋ค.

ํน์ง
- ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์ ์ ์ฅ๋ฉ๋๋ค.
- ์ ํจ ๊ธฐ๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค.
- ๋ณด์์ด ์๋์ ์ผ๋ก ๋ฎ์ต๋๋ค.
- ์์ ๋ฐ์ดํฐ ์ ์ฅ ์ฉ๋(์ฝ 4KB)์ ๊ฐ์ง๋๋ค.
class_jsp_v05 ํด๋ ์์ฑ
setCookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String username = "ํ๊ธธ๋";
Cookie userCookie = new Cookie("username", username);
/* ์ฟ ํค๋ ์๋ฒ์ธก์ ์ ์ฅ๋๋ค?
์ฟ ํค๋ ์์ฒญํ ์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ค.
์ฆ, setCookie.jsp ์์ฒญํ ์ฌ์ฉ์์ response ๊ฐ์ฒด๋ก ๋ฐ์ดํฐ ์กฐ๊ฐ์ ๋ด์์ ๋ณด๋ด ์ฃผ์ด์ผ ํ๋ค.
*/
userCookie.setMaxAge(60 * 60 * 24);
response.addCookie(userCookie);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>์ฌ์ฉ์๊ฐ ์ด ํ์ด์ง ์์ฒญ์์ ์๋ฒ์ธก์์ ์ฟ ํค๋ฅผ ์์ฑํด์ ์๋ต ํฉ๋๋ค.</h1>
<a href="getCookie.jsp">์ฟ ํค ๊ฐ ์ฝ์ด ๋ณด๋ ํ์ด์ง</a>
</body>
</html>
getCookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
Cookie[] cookies = request.getCookies();
String cUsername = null;
if(cookies != null) {
// ์ฟ ํค๋ ์ฌ๋ฌ๊ฐ ์กด์ฌ ๊ฐ๋ฅํ๋ค. ์ฌ๊ธฐ ํ์ด์ง์์ ํ์ํ
// ์ฟ ํค๋ ์ฐ๋ฆฌ๊ฐ ์ ์ํ username ์ด๋ฆ์ ๊ฐ์ง ๋
์์ด๋ค.
for(Cookie c : cookies) {
if(c.getName().equals("username")){
cUsername = c.getValue();
break;
}
}
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>์ฟ ํค ์ฝ๊ธฐ</h2>
<%
if(cUsername != null) {
out.println("<p> ์๋
ํ์ธ์ " + cUsername + " ๋");
} else {
out.println(" <p> ์ฟ ํค๊ฐ ์ค์ ๋์ง ์์์ต๋๋ค. </p>");
}
%>
<a href="setCookie.jsp">์ฟ ํค ์ค์ ํ๋ฌ ๊ฐ๊ธฐ</a>
</body>
</html>



์ธ์ ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฒ
์ธ์ (Session)
์๋ฒ์ ์ ์ฅ๋๋ ์ฌ์ฉ์๋ณ ๋ฐ์ดํฐ์ ๋๋ค.
๊ฐ ์ฌ์ฉ์๋ ๊ณ ์ ํ ์ธ์ ID๋ฅผ ๊ฐ์ง๋ฉฐ, ์ธ์ ID๋ฅผ ํตํด ์๋ฒ๋ ์ฌ์ฉ์๋ฅผ ์๋ณํ ์ ์์ต๋๋ค.
์ธ์ ์ ์ฃผ๋ก ๋ก๊ทธ์ธ ์ ๋ณด, ์ฌ์ฉ์ ์ค์ , ์ ํ๋ฆฌ์ผ์ด์ ์ํ ๋ฑ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.

์ธ์ ์ ํน์ง
- ์๋ฒ์ ์ ์ฅ๋ฉ๋๋ค.
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
- ๋น๊ต์ ํฐ ๋ฐ์ดํฐ ์ ์ฅ ์ฉ๋์ ๊ฐ์ง๋๋ค.
- ๋ณด์์ด ์๋์ ์ผ๋ก ๋์ต๋๋ค.
์ํ ์ ์ง๋?
- ์ธ์
ID
์๋ฒ๋ ํด๋ผ์ด์ธํธ์์ ์ํธ์์ฉ์ ์ถ์ ํ๊ธฐ ์ํด ์ธ์ ID๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ ์ธ์ ID๋ฅผ ์ฟ ํค๋ก ์ ๋ฌ๋ฐ์ผ๋ฉฐ, ์ดํ ๋ชจ๋ ์์ฒญ์ ์ด ์ธ์ ID๋ฅผ ํฌํจํ์ฌ ์๋ฒ์ ์ ์กํฉ๋๋ค. ์๋ฒ๋ ์ด ์ธ์ ID๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์ ์งํฉ๋๋ค. - ์ถ์์ ์ธ ๊ฐ๋
ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ํ ์ ์ง๋ ๋ฌผ๋ฆฌ์ ์ธ ์ฐ๊ฒฐ์ ์๋ฏธํ๋ ๊ฒ์ด ์๋๋ผ,
ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด๋ฅผ ์ธ์ ID๋ฅผ ํตํด ์ถ์ ํ๊ณ ๊ด๋ฆฌํ๋ ์ถ์์ ์ธ ๊ฐ๋ ์ ๋๋ค.
class_jsp_v06 ํด๋ ์์ฑ
setSession.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String username = "ํ๊ธธ๋";
int age = 21;
session.setAttribute("username", username); // key value ๊ตฌ์กฐ map
session.setAttribute("age", age);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>์ธ์
์ค์ ํ์ด์ง</title>
</head>
<body>
<h2>์ธ์
์ค์ ์ด ์๋ฃ๋์์ต๋๋ค.</h2>
<a href="getSession.jsp">์ธ์
์ฝ์ด ๋ณด๊ธฐ</a>
</body>
</html>
getSession.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>
<h2>์ธ์
์ฝ๊ธฐ</h2>
<%
// ์ผํญ ์ฐ์ฐ์
// if else
// try catch ์ฌ์ฉ ๊ฐ๋ฅ
try{
String username = (String)session.getAttribute("username");
int age = (int) session.getAttribute("age");
if(username != null){
out.println("<p> ์๋
" + username + "</p>");
out.println("๋์ด๋ " + age +" ์ด๋ค์! </p>");
} else {
out.println("์ธ์
์ด ์ค์ ์ด ๋์ง ์์์ต๋๋ค.");
}
} catch(Exception e){
response.sendRedirect("");
}
%>
</body>
</html>


๋์ ๊ณผ์
์ธ์ ๊ณผ ๊ด๋ จ๋ ๋ฉ์๋๋ค์ ํ์ธ ๋ฐ ํ์ฉํ๊ณ ์ธ์ ์ ๋ฌดํจํ ์ํค๋ ๊ธฐ๋ฅ์ ๋ง๋ค์ด ๋ณด์ธ์
|
๋ฉ์๋ ์ด๋ฆ
|
๋ฆฌํด ํ์
|
์ค๋ช
|
|
getAttribute(String name)
|
java.lang.Object
|
์ธ์
์์ฑ๋ช
์ด name์ธ ์์ฑ์ ๊ฐ์ Object ํ์
์ผ๋ก ๋ฆฌํดํ๋ค. ํด๋น ๋๋ ์์ฑ๋ช
์ด ์์ ๊ฒฝ์ฐ์๋ null ๊ฐ์ ๋ฆฌํดํ๋ค.
|
|
getAttributeNames()
|
java.util.Enumeration
|
์ธ์
์์ฑ์ ์ด๋ฆ๋ค์ Enumeration ๊ฐ์ฒด ํ์
์ผ๋ก ๋ฆฌํดํ๋ค.
|
|
getCreationTime()
|
long
|
1970๋
1์ 1์ผ 0์ 0์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ฌ ํ์ฌ ์ธ์
์ด ์์ฑ๋ ์๊ฐ๊น์ง ๊ฒฝ๊ณผํ ์๊ฐ์ ๊ณ์ฐํ์ฌ 1/1000์ด ๊ฐ์ผ๋ก ๋ฆฌํดํ๋ค.
|
|
getId()
|
java.lang.String
|
์ธ์
์ ํ ๋น๋ ๊ณ ์ ์๋ณ์๋ฅผ String ํ์
์ผ๋ก ๋ฆฌํดํ๋ค.
|
|
getMaxInactiveInterval()
|
int
|
ํ์ฌ ์์ฑ๋ ์ธ์
์ ์ ์งํ๊ธฐ ์ํด ์ค์ ๋ ์ธ์
์ ์ง์๊ฐ์ intํ์ผ๋ก ๋ฆฌํดํ๋ค.
|
|
invalidate()
|
void
|
ํ์ฌ ์์ฑ๋ ์ธ์
์ ๋ฌดํจํ ์ํจ๋ค.
|
|
removeAttribute(String.name)
|
void
|
์ธ์
์์ฑ๋ช
์ด name์ธ ์์ฑ์ ์ ๊ฑฐํ๋ค.
|
|
setAttribute(String name, Object value)
|
void
|
์ธ์
์์ฑ๋ช
์ด name์ธ ์์ฑ์ ์์ฑ๊ฐ์ผ๋ก value๋ฅผ ํ ๋นํ๋ค.
|
|
setMaxInactiveInterval(int interval)
|
void
|
์ธ์
์ ์ ์งํ๊ธฐ ์ํ ์ธ์
์ ์ง์๊ฐ์ ์ด ๋จ์๋ก ์ค์ ํ๋ค.
|
test_form.jsp
<%@ 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 username = "ํ๊ธธ๋";
int age = 21;
session.setAttribute("username", username); // key value ๊ตฌ์กฐ map
session.setAttribute("age", age);
%>
<!-- http:localhost:8080/jsp/test_form.jsp -->
<form action="challenge.jsp" method="POST">
<label for="qq">์ด๋ฆ</label>
<input type="text" id="qq" name="username" value="๊ฐ์">
<label for="ee">๋์ด</label>
<input type="text" id="ee" name="age" value="21">
<button type="submit">์ ์ถ</button>
</form>
</body>
</html>
challenge.jsp
<%@page import="org.apache.jasper.tagplugins.jstl.core.Remove"%>
<%@ 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>
<!-- ์ธ์
๊ณผ ๊ด๋ จ๋ ๋ฉ์๋๋ค์ ํ์ธ ๋ฐ ํ์ฉํ๊ณ ์ธ์
์ ๋ฌดํจํ ์ํค๋ ๊ธฐ๋ฅ์ ๋ง๋ค์ด ๋ณด์ธ์ -->
<h2>์ธ์
์ญ์ </h2>
<%
try {
session.removeAttribute("username");
session.removeAttribute("age");
// ์ธ์
์์ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋์ด๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
String username = (String) session.getAttribute("username");
Integer age = (Integer) session.getAttribute("age");
request.getSession().invalidate();
// ์ฌ์ฉ์ ์ด๋ฆ์ด null์ด ์๋ ๊ฒฝ์ฐ
if (username != null) {
// ์ธ์
๋ฌดํจํ
out.print(username);
out.print(age);
// ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋์ด๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
out.println("<p>์๋
" + username + "</p>");
out.println("<p>๋์ด๋ " + age + "์ด๋ค์!</p>");
} else {
// ์ธ์
์ด ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ
out.println("<p>์ธ์
์ด ์ค์ ๋์ง ์์์ต๋๋ค.</p>");
}
} catch (Exception e) {
// ์์ธ๊ฐ ๋ฐ์ํ๋ฉด setSession.jsp๋ก ๋ฆฌ๋ค์ด๋ ํธํฉ๋๋ค.
response.sendRedirect("test_form.jsp");
}
%>
</body>
</html>


๊ตฌ๊ตฌ๋จ ๋ง๋ค์ด ๋ณด๊ธฐ
gugudan_form.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 mHidden = "ํ๊ธธ๋";
%>
<h1>๊ตฌ๊ตฌ๋จ์ ์ฌ์ฉํ ์ซ์๋ฅผ ์
๋ ฅ ํ์์ค</h1>
<form action="result.jsp" method="get">
<input type="hidden" name="mHidden" value="<%=mHidden%>">
<input type="number" name="number" value="7">
<input type="submit" value="์ ์ถ">
</form>
</body>
</html>
result.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 sessionId = session.getId();
out.print("sessionId : " + sessionId);
String numberStr = request.getParameter("number");
int number = Integer.parseInt(numberStr); // ์์ธ ์ฒ๋ฆฌ ์๋ต
%>
<h2> <%=number %> ๋จ</h2>
<table border="1">
<thead>
<tr>
<th>๊ณ์ฐ์</th>
<th>๊ฒฐ๊ณผ</th>
</tr>
</thead>
<tbody>
<% for(int i = 1; i <= 9; i++) { %>
<tr>
<td><%=number %> x <%= i %> </td>
<td><%=number * i %></td>
</tr>
<%} %>
</tbody>
<tfoot></tfoot>
</table>
</body>
</html>

