๐URL root ๋ณ๊ฒฝ
- project โ properties โ web project settings โ context root โ '/'๋ก ๋ณ๊ฒฝ.
๐์น๋ธ๋ผ์ฐ์ ์์ ์น๋ฌธ์ ์ถ๋ ฅ
- ์น๋ธ๋ผ์ฐ์ ๋ง๋ค ๊ฐ์์ ์์์ ํด์๋ฐฉ์์ผ๋ก ๋ฌธ์๋ฅผ ํด์ํ๊ธฐ ๋๋ฌธ์ ์ปจํ
์ธ ํ์์ ๋ฏธ๋ฆฌ ์๋ ค์ค์ผ ํ๋ค.
- response.contentType("text/html; charset=utf-8");
๐์น๋ธ๋ผ์ฐ์ ๋ก ์ ์ก ์ ํ๊ธ ๊นจ์ง๋ ํ์.
- ์น์๋ฒ์์ ์น๋ธ๋ผ์ฐ์ ๋ก ์ ์ก ์ ISO-8859-1 ์ ๋ฌธ์์ธํธ๋ก ์ธ์ฝ๋ฉ๋๋ค. ์ด๋ 1๋ฐ์ดํธ์ฉ ์ ์ก๋๊ธฐ ๋๋ฌธ์ ํ๊ธ์ด ๊นจ์ง๊ฒ ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ response ์ setCharacterEncoding() ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ charset์ "UTF-8"๋ก ๋ณ๊ฒฝํด์ค์ผ ํ๋ค.
- response.setCharaceterEncoding("UTF-8");
๐์
๋ ฅ ๋ฐ์ดํฐ ์ ์ก ์ ํ๊ธ ๊นจ์ง๋ ํ์.
- ์น๋ธ๋ผ์ฐ์ ์์ ์น์๋ฒ๋ก ์ ์ก ์ ๋ฌธ์์ธํธ๋ฅผ UTF-8๋ก ๋ณ๊ฒฝํด์ค์ผ ํ๋ค.
- request.setCharaceterEncoding("UTF-8");
- ์ถ๊ฐ๋ก ์์ฒญ ์ ์
๋ ฅ๋ ๊ฐ์ ์ฌ์ฉ ์ ์ 'null ์ฌ๋ถ' ๋ฐ '๊ณต๋ฐฑ์ฌ๋ถ'๋ฅผ ํ์ธ ํ ์ฌ์ฉํด์ผ ํ๋ค.
๐submit ๋ฒํผ์ ๊ธฐ๋ฅ๋ณ๋ก ๊ตฌ๋ณํ๊ธฐ.
- input type="button" 2๊ฐ์ธ ๊ฒฝ์ฐ
- ์ฌ์ฉ์ ์
๋ ฅ๊ฐ์ input ํ๊ทธ๋ฅผ ํตํด ์๋ฒ์์ ์
๋ ฅ๋ฐ๊ธฐ ์ํด์๋ name ์์ฑ์ ์ง์ ํด์ค์ผ ํ๋ฉฐ, ๋์ผํ name ๊ฐ์ ๊ตฌ๋ถํ๊ธฐ ์ํด์๋ name ๊ฐ์ ๋ค๋ฅด๊ฒ ์ง์ ํ๊ฑฐ๋, value ์์ฑ ๊ฐ์ ๋ค๋ฅด๊ฒ ์ง์ ํด์ค์ผ ํ๋ค.
- input type="submit" name="operation" value="v1"
- input type="submit" name="operation" value="v2"
์
๋ ฅ ๋ฐ์ดํฐ ๋ฐฐ์ด๋ก ๋ฐ๊ธฐ
- input ํ๊ทธ๋ฅผ ๋์ ์ผ๋ก ์ถ๊ฐํ๋ ๊ฒฝ์ฐ, ๋์ผํ name ์์ฑ ๊ฐ์ ๊ฐ๋ input ํ๊ทธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ์ผ๋ฐ์ ์ด๋ค.
- ์ด์ฒ๋ผ ๋์ผํ name ์์ฑ์ ๊ฐ์ ์ฌ๋ฌ ๊ฐ ๋ฐ๊ฒ ๋ ๊ฒฝ์ฐ, ์ด๋ฅผ ๋ฐฐ์ด์ ๋ด์ ์๋ฒ์ ์ ๋ฌ๋๋ค.
- ์๋ฒ์์ ๋ฐ๋ ๋ฐฉ๋ฒ
String[] values = request.getParameterValues("name๊ฐ");
๐์ํ ์ ์ง์ ํ์์ฑ
- ์น์ ์ ํ๋ฆฌ์ผ์ด์
๋ด ์๋ธ๋ฆฟ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ธฐ ์ํด์๋ ํ๋์ ์๋ธ๋ฆฟ์์ ์
๋ ฅ๋ฐ์ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์ญ๋ณ์์ ๊ฐ์ ๊ฐ๋
์ด ํ์ํ์ง๋ง ์ฌ์ฉํ์ง ๋ชปํ๋ค.(๋ฉํฐ ์ค๋ ๋)
- ์ฒ์ ๊ฐ์ ์
๋ ฅ ํ ์๋ธ๋ฆฟ์ด ์ข
๋ฃ๋๋ฉด, ๋ด๋ถ ๊ฐ๋ค๋ ํจ๊ป ์ฌ๋ผ์ง๋ค.
- ์
๋ ฅ๋ฐ์ ๊ฐ๋ค์ ๋ค๋ฅธ ์๋ธ๋ฆฟ๊ณผ ๊ณต์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ฐ๋
.
- application
- session
- cookie
โ Application ์ ์ฅ์ : ์๋ธ๋ฆฟ ์ปจํ
์คํธ
- ์๋ธ๋ฆฟ ์ปจํ
์คํธ๋? ์๋ธ๋ฆฟ์ด ์๋ธ๋ฆฟ ์ปจํ
์ด๋์ ํต์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฉ์๋๋ค์ ๊ฐ์ง๊ณ ์๋ ํด๋์ค.
- ํ๋์ Web Application ๋ด์ ์๋ ๋ชจ๋ ์๋ธ๋ฆฟ๋ค์ ๊ด๋ฆฌํ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๊ธฐ ์ํด ํ์ํ ๊ฐ๋ค์ ์ ์ฅํ๊ณ ์๋ธ๋ฆฟ ๊ฐ์ ๊ณต์ ํ ์ ์๋๋ก ๋์์ฃผ๋ ์ญํ .
- ์ด์ฒ๋ผ Servlet Context์ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด์๋ attribute ํํ๋ก ์์ฑ๋ช
๊ณผ ์์ฑ๊ฐ์ ์ง์ ํด์ค์ผ ํ๋ค.
- ์ฌ์ฉ๋ฐฉ๋ฒ
- ServletContext application = reuqest.getServletContext();
- application.setAttribute("์์ฑ๋ช
1","์์ฑ๊ฐ1");
- application.setAttribute("์์ฑ๋ช
2","์์ฑ๊ฐ2");
- appication์ ์ ์ฅ๋ ๊ฐ์ ๊ฐ์ ธ์์ ์ฌ์ฉ.
- application.getAttribute("์์ฑ๋ช
");
โกSesstion์ ์ด์ฉํ ์ํ๊ฐ ์ ์ง
- HttpSession session = reuqest.getSession();
- session.setAttribute("์์ฑ๋ช
","์์ฑ๊ฐ");
- session.getAttribute("์์ฑ๋ช
");
Application๊ณผ Session ์์ฑ ์ฐจ์ด
- Application : ์ ์ญ ๊ณต๊ฐ์์ ์ฌ์ฉ๊ฐ๋ฅํ ์์ฑ.
- Session : session ๋ด์์๋ง ์ฌ์ฉ๊ฐ๋ฅํ ์์ฑ.
- session์ ํ์ฌ ์ ์ํ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ฏธํ๋ค.
- ์ฆ, ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅธ session์ ๊ฐ๊ฒ ๋๊ณ , ํด๋น session์ ๊ฐ ์ฌ์ฉ์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
- ์ปดํจํฐ์์ ๋ ๊ฐ์ ๋ค๋ฅธ ์น๋ธ๋ผ์ฐ์ ๋ฅผ ์คํํ์ฌ ์๋ฒ์ ์์ฒญํ ๊ฒฝ์ฐ, ๋ ๋ธ๋ผ์ฐ์ ๋ ๋ค๋ฅธ ์ฌ์ฉ์๋ก ์ธ์ํ๊ฒ ๋๋ค. ์ฆ, session์ด ๋ค๋ฅด๋ค.
- ์ถ๊ฐ๋ก ์ปดํจํฐ์์ ๋์ผํ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ ๊ฐ๋ฅผ ์คํํ ๊ฒฝ์ฐ ๋ ๋ธ๋ผ์ฐ์ ๋ ๊ฐ์ ์ฌ์ฉ์๋ก ์ธ์ํ๋ค.(๋ฉํฐ ์ค๋ ๋ : ํ๋์ ํ๋ก์ธ์ค ๋ด์ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ์์์ ๊ณต์ ํ์ฌ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.)
์น ์๋ฒ์์ ํ์ฌ ์ ์ํ ์ฌ์ฉ์(Session)๋ฅผ ๊ตฌ๋ถํ๋ ๋ฐฉ์.
- ์๋ฒ์๋ ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌ ์, ๋ค๋ฅธ ์๋ธ๋ฆฟ์ ๊ณต์ ํ๊ธฐ ์ํ ๊ณต๊ฐ์ด ์กด์ฌํ๋ฉฐ, ์ด๋ฅผ application์ด๋ผ๊ณ ํ๋ค.
- ๋ํ, ํ์ฌ ์ ์ํ ์ฌ์ฉ์๋ง๋ค ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ์ธ session์ด ์กด์ฌํ๋ค.
- ์ธ์
์ ์ธ์
์์ด๋(SID)๋ฅผ ๊ฐ๊ณ ์์ด์ผ๋ง session ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- WAS๋ ์ฒ์ ์์ฒญ์ผ๋ก ๋ค์ด์จ ์ฌ์ฉ์์๊ฒ๋ ์๋ณ๋ฒํธ๊ฐ ์์ผ๋ฏ๋ก application๋ง ์ ๊ณตํด์ค๋ค. ์๋ฒ๋ ์๋ต ์์ SID๋ผ๋ ์์ด๋๋ฅผ ์ ๊ณตํด์ค ๋ค WAS๋ SID์ ์ฐ๊ฒฐ๋ session ๊ณต๊ฐ์ ํ ๋นํ๋ค. ์ด ํ์ ๋์ผํ ์ฌ์ฉ์๊ฐ ํด๋น ์๋ฒ์ ์์ฒญ ์ SID๊ฐ ํฌํจ๋๋ฉฐ, WAS์์๋ ํด๋น ์ฌ์ฉ์์ ๋ํ session์ ์ ๊ณตํ๊ฒ ๋๋ค.
- ์ค์ ์น ๋ธ๋ผ์ฐ์ ์์ฒญ ํค๋๋ฅผ ํ์ธํด๋ณด๋ฉด, COOKIE ๊ฐ์ผ๋ก JSESSION์ ์๋ณ์ ๊ฐ์ ํตํด ํด๋น ๋ธ๋ผ์ฐ์ ๊ฐ ๋์ผํ ์ฌ์ฉ์์ธ์ง ์ฌ๋ถ๋ฅผ ์๋ณํ๋ค.
- ์๋ฒ์ธก SID ๊ด๋ฆฌ ๊ด๋ จ ๋ฉ์๋
- void invalidate() : ์ธ์
์์ ์ฌ์ฉ๋๋ ๊ฐ์ฒด๋ค์ ๋ฐ๋ก ํด์ .
- void setMaxInactiveInterval(int interval) : ์ธ์
ํ์์์์ ์ ์(์ด)๋ก ์ค์
- boolean isNew() : ์ธ์
์ด ์๋ก ์์ฑ๋์๋์ง ํ์ธ
- Long getCreationTime() : ์ธ์
์ด ์์๋ ์๊ฐ์ ๋ฐํ, 1970๋
1์ 1์ผ์ ์์์ผ๋ก ํ๋ ๋ฐ๋ฆฌ์ด.(epoch time)
- long getLastAccessedTime() : ๋ง์ง๋ง ์์ฒญ ์๊ฐ, 1970๋
1์ 1์ผ์ ์์์ผ๋ก ํ๋ ๋ฐ๋ฆฌ์ด.
- session์ ์์ฑ ์์ ์ดํ ํน์ ๊ฐ๊ฒฉ์ผ๋ก ์ญ์ ๋๋๋ฐ, ์ด ์๊ฐ์ session ์ฌ์ฉ์๊ฐ ์ ์ํ ๋๋ง๋ค ๋ฆฌ์
๋๋ค. ์ธ์
์๊ฐ์ด ์ง๋ ๋ค ์ ์ํ๊ฒ ๋ ๊ฒฝ์ฐ, ์๋ฒ๋ ํด๋น ์ฌ์ฉ์๋ฅผ ๋ค๋ฅธ ์ฌ์ฉ์๋ก ์ธ์ํ๊ฒ ๋๋ค.
โขCookie๋ฅผ ์ด์ฉํ ์ํ ๊ฐ ์ ์ง
- cookie : ํด๋ผ์ด์ธํธ์์ ๊ด๋ฆฌํ๋ ๊ฐ.
- ์๋ฒ์ธก์์ ์ ์ฅํ๋ ์ ์ฅ์ : application, session
- ํด๋ผ์ด์ธํธ์์ ์ ์ฅํ๋ ์ ์ฅ์ : cookie
- ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ฒ๋ก ์์ฒญ ์ ์ ๋ฌ๋๋ ๊ฐ
- Header ์ ๋ณด(TCP/IP ์ ๋ณด)
- ์ฌ์ฉ์ ๋ฐ์ดํฐ
- ์ฟ ํค
- ์ฟ ํค๋ ์ฒ์ ์์ฑ์ ์๋ฒ์์ ์์ฑ ํ response header๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ก ์ ๋ฌํด์ฃผ๋ฉฐ, ์๋ฒ์ธก์์ ์ฟ ํค๋ฅผ ์์ฒญ ์๋ง๋ค ํด๋ผ์ด์ธํธ ์ธก์์ ์ฟ ํค๋ฅผ ์ ๋ฌํด์ค๋ค.
- cookie ๊ด๋ จ ๋ฉ์๋
- addCookie();
- cookie ์์ ์ ์ฅ๋๋ ๊ฐ์ ๋ฌธ์์ด ํํ๋ง ์ ์ฅ๋ ์ ์๋ค.
Cookie cookie = new Cookie("c",String.valueOf(result));
response.addCookie(cookie);
- getCookies();
- Cookie[] cookies = request.getCookies();
- ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ด ์กด์ฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด๋ก ๋ฐํ.
for(Cookie cookie : cookies)
if("c".equals(cookie.getName()))
_c = cookie.getValue();}
Cookie ๊ด๋ จ ์ต์
- Cookie.setPath("url") : ๋งค๊ฐ๋ณ์์ ๋์ผํ url ์์ฒญ ์ cookie๋ฅผ ๊ฐ์ ธ์ค๋๋ก ํ๋ ์ต์
.
- Cookie.setMaxAge(int sec)
- cookie์ ๋ณ๋์ maxAge๋ฅผ ์ค์ ํด์ฃผ์ง ์์ ๊ฒฝ์ฐ, default๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ช
์ฃผ๊ธฐ์ ๋์ผํด์ง๋ค. ์ฆ, ๋ธ๋ผ์ฐ์ ์ข
๋ฃ ์ ํจ๊ป ์ญ์ ๋๋ค.
- maxAge ์ค์ ์ ์ฟ ํค๋ ๋ธ๋ผ์ฐ์ ์ ์ฐ๋๋ ์ปดํจํฐ ๋ด๋ถ ์๊ตฌ ์ ์ฅ์์ ์ ์ฅ๋์ด ๋ธ๋ผ์ฐ์ ์ข
๋ฃ ์์๋ ๊ฐ์ ์ ์งํ ์ ์๊ฒ ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก
setMaxAge(24 * 60 * 60); ์ ๊ฐ์ด ๋ช
์์ ์ผ๋ก ์๊ฐ์ ์ง์ ํด์ค๋ค. ์๋ 1์ผ ๋์ cookie๋ฅผ ์ ์งํ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค.
application VS session VS cookie ๋น๊ต
1.application
- ์ฌ์ฉ๋ฒ์ : ์ ์ญ ๋ฒ์์์ ์ฌ์ฉํ๋ ์ ์ฅ ๊ณต๊ฐ
- ์๋ช
์ฃผ๊ธฐ : WAS ์์ ~ ์ข
๋ฃ
- ์ ์ฅ์์น : WAS ์๋ฒ ์ธก ๋ฉ๋ชจ๋ฆฌ
2.session
- ์ฌ์ฉ๋ฒ์ : ์ธ์
๋ฒ์์์ ์ฌ์ฉํ๋ ์ ์ฅ ๊ณต๊ฐ
- ์๋ช
์ฃผ๊ธฐ : session ์์ ~ ์ข
๋ฃ
- ์ ์ฅ์์น : WAS ์๋ฒ ์ธก ๋ฉ๋ชจ๋ฆฌ
3.cookie
- ์ฌ์ฉ๋ฒ์ : Web browser ๋ณ ์ง์ ํ path ๋ฒ์ฃผ ๊ณต๊ฐ
- ์๋ช
์ฃผ๊ธฐ : Browser์ ์ ๋ฌํ ์๊ฐ ~ ๋ง๋ฃ์๊ฐ
- ์ ์ฅ์์น : Web Browser ๋ฉ๋ชจ๋ฆฌ ๋๋ ํ์ผ
- ์ ์ฅ ๊ธฐ๊ฐ์ด ๊ธธ ๊ฒฝ์ฐ cookie๋ฅผ ์ฌ์ฉ.
- ํน์ url์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ cookie๋ฅผ ์ฌ์ฉ.
- ์ฆ, ์๋ฒ ์์์ ๋ถ๋ด์ ์ค์ฌ์ค๋ค.
๐ํ์ด์ง ์ ํ ๋ณต์ต
Redirect
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์์ฒญํ ์ฃผ์๋ฅผ ์๋ต ๊ฒฐ๊ณผ๋ก ์ ๋ฌํ๋ ๊ฒ.
- ํด๋ผ์ด์ธํธ๋ response์ ๋ด๊ธด redirect ์ฃผ์๋ฅผ ์ฌ์์ฒญํ๊ฒ ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ url์ด ๋ณ๊ฒฝ๋๋ค.
- Redirect๋ ์๋ก์ด ์์ฒญ์ด ๋ฐ์ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ HttpServletRequest ๊ฐ์ฒด๋ ์๋ฉธ ํ ๋ค์ ์์ฑ๋๋ฏ๋ก, ๋ด๋ถ ๋ฐ์ดํฐ๋ ๋ชจ๋ ์ญ์ ๋๋ค. ํ์ง๋ง, HttpSession ๊ฐ์ฒด๋ ์ ์ง๋๋ค.
forward
- ์๋ฒ ๋ด๋ถ์์ ์ฝ๋ ์คํ ํ๋ฆ์ ์ด๋ํ๋ ๊ฒ์ ์๋ฏธ.
- ๋ธ๋ผ์ฐ์ ์์๋ ๋ค๋ฅธ ๊ณณ์ผ๋ก ํ๋ฆ์ด ์ด๋๋์๋ค๋ ๊ฒ์ ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฃผ์์ฐฝ์ ์ฃผ์๋ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
- HttpServletRequest ๊ฐ์ฒด ๋ฐ HttpSession ๊ฐ์ฒด ๋ชจ๋ ์ ์ง.