๐ Attribute
- Parameter๋ ํด๋ผ์ด์ธํธ์์ form์ผ๋ก ์ ๋ฌํ๋ ๋ฐ์ดํฐ์๋ค๋ฉด, Attribute๋ ํ๋์ ์๋ธ๋ฆฟ์์ ๋ค๋ฅธ ์๋ธ๋ฆฟ์ผ๋ก ์ ๋ฌํ๋ ๋ฐ์ดํฐ์ด๋ค
- ๊ฐ Attribute๋ ์ข
๋ฅ๋ณ๋ก ์ ํจํ ๋ฒ์(Scope)๊ฐ ์กด์ฌํ๋ฉฐ ์ฉ๋์ ๋ง๊ฒ ํ์ฉํด์ผ ํ๋ค
- ์ข
๋ฅ๋ก๋ Application, session, request, page๊ฐ ์๋ค
๐คบ Page์ Attribute
- ํด๋น JSPํ์ด์ง ๋ด๋ถ์์๋ง ์ฌ์ฉํ๋ ์ดํธ๋ฆฌ๋ทฐํธ (์ง์ญ๋ณ์๊ฐ์ ๋๋)
- page scope์ ๋ฑ๋กํ attribute๋ ๋ค๋ฅธ๊ณณ์ผ๋ก forward๋ง ํด๋ ์ฌ๋ผ์ง๊ฒ ๋๋ค (forward์ฉ์ด ์๋)
๐คบ Request์ Attribute
- ํ๋์ ์์ฒญ์ด ์๋ต๋๊ธฐ ์ ๊น์ง๋ ์ ์ง๋๋ attribute
- forward, include๊น์ง๋ ์ ์ง๋๊ณ ์๋ต์ด ๋ฐ์ํ๋ฉด ์ฌ๋ผ์ง๊ฒ ๋๋ค
- ์ฒซ๋ฒ์งธ ์๋ธ๋ฆฟ์์ ์ป์ด๋ธ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฌผ์ view ํ์ด์ง์์ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์์ฒญ ๊ฐ์ฒด์ attribute์ ์ค์ด ๋ณด๋ผ ์ ์๋ค
- ํ๋ผ๋ฏธํฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก Key-Value ๋ฐฉ์์ ์ฌ์ฉํ๋ค
์ค์ด๋์ ๋ : setAttribute("key", value)
๊บผ๋ผ ๋ : getAttribute("key")
- ์ดํธ๋ฆฌ๋ทฐํธ์ ์ค์ด๋์ ๊ฐ์ ๊บผ๋ผ ๋ ํด๋น ํ์
์ด Object๋ก ๋์จ๋ค(ํ์ํ๋ค๋ฉด ๋ค์ด์บ์คํ
ํ์ฌ ์๋์ ํ์
์ผ๋ก ์ฌ์ฉํ ์ ์๋ค/ ํ๋ผ๋ฏธํฐ๋ ๊บผ๋ผ ๋ ๋ฌด์กฐ๊ฑด ๋ฌธ์์ด ํ์
์ผ๋ก ๋ณํ๋๋ค)
๐คบ Session์ Attribute
- ํ๋์ ์ธ์
์ด ๋ง๋ฃ๋ ๋ ๊น์ง ์๋ช
์ด ์ ์ง๋๋ attribute
- ์ฌ์ฉ์๊ฐ ํด๋น ์๋ฒ์ ์ฒ์ ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ก๋ถํฐ ์ธ์
ID๋ฅผ ๋ฐ๊ธ๋ฐ๋๋ค
- ํด๋น ์ธ์
ID๋ ์ ์ผํ ๊ฐ์ด๋ฉฐ ํด๋ผ์ด์ธํธ ๋ณธ์ธ์์ ์ฆ๋ช
ํ ์ ์๋ ์ ์ผํ ์๋จ์ด๋ค
- ์ธ์
ID๋ ์๊ฐ์ด ๋ชจ๋ ์ง๋๊ฑฐ๋ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข
๋ฃํ๋ฉด ๋ง๋ฃ๋๋ค(ex: ์ํ)
- ์ธ์
์ด ์ ์ง๋๋ ์๊ฐ์ ์ค์ ๊ฐ๋ฅํ๋ฉฐ, ๊ณ์ ์ ์ง๋๊ฒ ํ ์๋ ์๋ค
๐คบ Application์ Attribute
- WAS(์น ์ดํ๋ฆฌ์ผ์ด์
์๋ฒ)์ ์ ์ฅํด ๋๋ attribute
- ์๋ฒ๊ฐ ์ข
๋ฃ๋๊ธฐ ์ ๊น์ง ๊ณ์ ์ ์ง๋๋ค
- ์ธ์
๊ฐ์ฒด๋ ์ ์์ ์ ๋งํผ ์กด์ฌํ์ง๋ง, ์๋ฒ๋ 1๋์ด๋ฏ๋ก ์ ์ญ๋ณ์๋ผ๊ณ ๋ณผ ์ ์๋ค
๐ฌ ์ฝ๋ >>
โ index.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Attribute Scope</title>
</head>
<body>
<button id="test-btn">์ดํธ๋ฆฌ๋ทฐํธ ์ถ๊ฐ ํ ํฌ์๋ ํด๋ณด๊ธฐ... </button>
<script src="/chap04/javascript/index.js"></script>
</body>
</html>
โ process.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
// html ๋ถ๋ถ์ ๋ค ์ง์ฐ๊ณ ์ฌ์ฉํ๋ฉด jsp๋ฅผ ์๋ธ๋ฆฟ์ฒ๋ผ ํ์ฉํ ์๋ ์๋ค (๋ถํธํจ)
// page scope: ํ์ฌ ํ์ด์ง๋ฅผ ๋์ด๊ฐ๋ฉด ๋ง๋ฃ, ํ์ฌ ํ์ด์ง์ ์ง์ญ๋ณ์
pageContext.setAttribute("flavor", "strawberry");
// request scope : ์๋ต์ ํ๊ณ ๋๋ฉด ๋ง๋ฃ, ํ๋์ ์์ฒญ์ด ์๋ต๋๊ธฐ ์ (์ฒ๋ฆฌ๋๊ธฐ ์ )๊น์ง ์ ์ง
request.setAttribute("flavor", "kiwi");
// session scope : ์ธ์
์ด ๋ง๋ฃ๋๋ฉด ํจ๊ป ์ฌ๋ผ์ง๋ค, ํ์ฌ ์ ์์ ๋งํผ ์กด์ฌ
session.setAttribute("flavor", "orange");
// application scope : ์๋ฒ๊ฐ ์ผ์ ธ ์๋ ๋์ ๊ณ์ ์ ์ง๋๋ค
application.setAttribute("flavor", "banana");
// getRequestDispatcher ์์ฑ์ ํ์ํ ๊ฒฝ๋ก๋ webapp ๋ฐ์ ๊ฒฝ๋ก
request.getRequestDispatcher("/attribute_scope/view.jsp")
.forward(request, response);
%>
โ view.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>๊ฐ ์์ญ ์ดํธ๋ฆฌ๋ทฐํธ ๊บผ๋ด์ ํ์ธํด๋ณด๊ธฐ</title>
</head>
<body>
<h3># attribute ํ์ธ</h3>
<ul>
<li>page : <%= pageContext.getAttribute("flavor")%></li>
<li>request :<%= request.getAttribute("flavor")%></li>
<li>session : <%= session.getAttribute("flavor")%></li>
<li>application : <%= application.getAttribute("flavor")%></li>
</ul>
</body>
</html>
๐ ์ ์ฒด์ ํ๋ฆ >>
- req1 ๊ณผ req3์ ๋ด์ฉ์ ๊ฐ์ ์ ์๋ค(setAttribute๋ฅผ ํตํด์ ์์ฒญ์ ๋ฐ์์ค๊ธฐ ๋๋ฌธ)
- req2๋ null๊ฐ์ด ์ ์ก๋๋ค (๋ฐ์ ์์ฒญ์ด ์์)
- request์ ๊ฒฝ์ฐ view.jsp๊น์ง ์ ๋ฌ๋๋ฉฐ view.jsp์ ๋๋ฌํ์ฌ response๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ ์ฌ๋ผ์ง๋ค
๐บ ํ๋ฉด ์ถ๋ ฅ >>
โ index.jsp์์ ์ ์ํ์ ๊ฒฝ์ฐ(req1, req3 ๋์ผ) >>
โ view.jsp์์ ์ ์ํ์ ๊ฒฝ์ฐ(req2) >>