๋ณดํต ์น ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋๋ ์ ๋ณด๋ ์๋ธ๋ฆฟ์ ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ ธ์จ๋ค.๊ทธ๋ฌ๋ ๋์ ์ฌ์ฉ์ ์๊ฐ ๋ง์์ง๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋์๋๋ ์ํฅ์ ๋ฐ๊ฒ ๋๋ฏ๋ก ์ ๋ณด์ ์ข ๋ฅ์ ๋ฐ๋ผ ์ด๋ค ์ ๋ณด๋ค์ ํด๋ผ์ด์ธํธ PC๋ ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด๋๊ณ ์ฌ์ฉํ๋ฉด ์ข ๋ ํ๋ก๊ทธ๋จ์ ๋น ๋ฅด๊ฒ ์คํ์ํฌ ์ ์๋ค. ์ด ์ฅ์์๋ ๊ทธ ๋ฐฉ๋ฒ๊ณผ ํจ๊ป ์๋ธ๋ฆฟ์ด ๋ก๊ทธ์ธ ์ ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ผ์ ํ๊ฒ ์ ์ง์ํค๋ ๊ธฐ๋ฅ์ ๋ํด ์ดํด ๋ณด๊ฒ ๋ค.
์ผํ๋ชฐ์ ์ด์ฉํ๋ ์ผ๋ฐ ์ฌ์ฉ์๋ค์ ๋ก๊ทธ์ธ ์ํ๋ฅผ ๊ฐ๊ฐ์ ์น ํ์ด์ง๋ค์ด ์๋์ ์ผ๋ก ์๊ณ ์์ ๊ฒ์ด๋ผ ์๊ฐํ๋ค. ๊ทธ๋ฌ๋ ์ค์ HTTP ํ๋กํ ์ฝ ๋ฐฉ์์ผ๋ก ํต์ ํ๋ ์น ํ์ด์ง๋ค์ ์๋ก ์ด๋ค ์ ๋ณด๋ ๊ณต์ ํ์ง ์๋๋ค.
์ฌ์ฉ์ ์ ์ฅ์์ ์น ํ์ด์ง ์ฌ์ด์ ์ํ๋ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋ ค๋ฉด ํ๋ก๊ทธ๋๋จธ๊ฐ ์ธ์ ํธ๋ํน ์ด๋ผ๋ ์น ํ์ด์ง ์ฐ๊ฒฐ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋ค.
![แแ ณแแ ณแ แ ตแซแแ ฃแบ 2019-09-05 แแ ฉแแ ฎ 9.45.57](/Users/janghyeonjun/Desktop/แแ ณแแ ณแ แ ตแซแแ ฃแบ 2019-09-05 แแ ฉแแ ฎ 9.45.57.png)
HTTP ํ๋กํ ์ฝ์ ์๋ฒ-ํด๋ผ์ด์ธํธ ํต์ ์ stateless ๋ฐฉ์์ผ๋ก ํต์ ์ ํฉ๋๋ค. ์ฆ, ๋ธ๋ผ์ฐ์ ์์ ์ ์น ํ์ด์ง๋ฅผ ์ด๋ฉด ๊ธฐ์กด์ ์น ํ์ด์ง๋ ์๋ธ๋ฆฟ์ ๊ดํ ์ด๋ค ์ฐ๊ฒฐ ์ ๋ณด๋ ์ ์น ํ์ด์ง์์๋ ์ ์ ์๋ค.
HTTPํ๋กํ ์ฝ์ ๊ฐ ์น ํ์ด์ง์ ์ํ๋ ์ ๋ณด๋ฅผ ๋ค๋ฅธ ํ์ด์ง๋ค๊ณผ ๊ณต์ ํ์ง ์๋ stateless ๋ฐฉ์์ผ๋ก ํต์ ์ ํ๋ค. ๋ฐ๋ผ์ ์น ํ์ด์ง๋ ์๋ธ๋ฆฟ๋ผ๋ฆฌ ์ํ๋ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋ ค๋ฉด ์น ํ์ด์ง๋ฅผ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
- ํ๊ทธ: HTML์ ํ๊ทธ๋ฅผ ์ด์ฉํด ์น ํ์ด์ง๋ค ์ฌ์ด์ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋ค.
- URL Rewriting: GET ๋ฐฉ์์ผ๋ก URL ๋ค์ ์ ๋ณด๋ฅผ ๋ถ์ฌ์ ๋ค๋ฅธ ํ์ด์ง๋ก ์ ์กํ๋ค.
- ์ฟ ๊ธฐ: ํด๋ผ์ด์ธํธ PC์ Cookie ํ์ผ์ ์ ๋ณด๋ฅผ ์ ์ฅํ ํ ์น ํ์ด์ง๋ค์ด ๊ณต์ ํ๋ค.
- ์ธ์ : ์๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ณด๋ฅผ ์ ์ฅํ ํ ์น ํ์ด์ง๋ค์ด ๊ณต์ ํ๋ค.
ํ๊ทธ๋ ๋ธ๋ผ์ฐ์ ์๋ ํ์๋์ง ์์ง๋ง ๋ฏธ๋ฆฌ ์ ์ฅ๋ ์ ๋ณด๋ฅผ ์๋ธ๋ฆฟ์ ์ ์กํ ์ ์๋ค.
1.login.html์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.๋ก๊ทธ์ธ์ฐฝ์์ ID์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฏธ๋ฆฌ ํ๊ทธ์ ์ ์ฅ๋ ์ฃผ์,์ด๋ฉ์ผ ,ํด๋ํฐ ๋ฒํธ๋ฅผ ์๋ธ๋ฆฟ์ผ๋ก ์ ์กํ๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>๋ก๊ทธ์ธ ์ฐฝ</title>
</head>
<body>
<form name="frmLogin" method="post" action="login" enctype="UTF-8">
์์ด๋:<input type="text" name="user_id">
๋น๋ฐ๋ฒํธ:<input type="password" name="user_pw"><br>
<input type="submit" value="๋ก๊ทธ์ธ">
<input type="reset" value="๋ค์ ์
๋ ฅ">
<input type="hidden" name="user_address" value="์์ธ์ ์ฑ๋ถ๊ตฌ">
<input type="hidden" name="user_email" value="[email protected]">
<input type="hidden" name="user_hp" value="010-1111-1111">
</form>
</body>
</html>
2.LoginServletํด๋์ค๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค. getParameter()๋ฉ์๋๋ฅผ ์ด์ฉํด ์ ์ก๋ ํ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ ํ ๋ธ๋ผ์ฐ์ ๋ก ๋ค์ ์ถ๋ ฅํ๋ค.
package sec01.ex01;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
//@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("init ๋ฉ์๋ ํธ์ถ");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
String user_id = req.getParameter("user_id");
String user_pw = req.getParameter("user_pw");
String user_address = req.getParameter("user_address");
String user_email = req.getParameter("user_email");
String user_hp = req.getParameter("user_hp");
String data = "์๋
ํ์ธ์!<br> ๋ก๊ทธ์ธ ํ์
จ์ต๋๋ค.<br><br>";
data+="<html><body>";
data+="์์ด๋: "+user_id;
data+="<br>";
data+="ํจ์ค์๋: "+user_pw;
data+="<br>";
data+="์ฃผ์: "+user_address;
data+="<br>";
data+="์ด๋ฉ์ผ: "+user_email;
data+="<br>";
data+="์ ํ๋ฒํธ: "+user_hp;
data+="</body></html>";
out.print(data);
}
@Override
public void destroy() {
System.out.println("destroy ๋ฉ์๋ ํธ์ถ");
}
}
-
์ด๋ฒ์๋ URL Rewriting์ ์ด์ฉํด ๋ก๊ทธ์ธ์ฐฝ์์ ์ ๋ ฅ ๋ฐ์ ID์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ค๋ฅธ ์๋ธ๋ฆฟ์ผ๋ก ์ ์กํ์ฌ ๋ก๊ทธ์ธ ์ํ๋ฅผ ํ์ธํด ๋ณด๊ฒ ๋ค.
**1.**LoginServlet.java ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค. ๋ก๊ทธ์ธ์ฐฝ์์ ์ ๋ ฅ๋ฐ์ ID์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ๊ทธ์ ๋ ๋ฒ์งธ ์๋ธ๋ฆฟ์ผ๋ก ๋ณด๋ด๊ธฐ๋ฅผ ํด๋ฆญํ๋ฉด ๋ก๊ทธ์ธ์ฐฝ์์ ์ ๋ ฅํ ID์ ๋น๋ฐ๋ฒํธ ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ ๋ณด๋ค์ GET๋ฐฉ์์ ์ด์ฉํด ๋ ๋ฒ์งธ ์๋ธ๋ฆฟ์ผ๋ก ์ ์กํ๋ค.
package sec01.ex02; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.net.URLEncoder; @WebServlet("/login") public class LoginServlet extends HttpServlet { @Override public void init() throws ServletException { System.out.println("init ๋ฉ์๋ ํธ์ถ"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); String user_id = req.getParameter("user_id"); String user_pw = req.getParameter("user_pw"); String user_address = req.getParameter("user_address"); String user_email = req.getParameter("user_email"); String user_hp = req.getParameter("user_hp"); String data = "์๋ ํ์ธ์!<br> ๋ก๊ทธ์ธ ํ์ จ์ต๋๋ค.<br><br>"; data+="<html><body>"; data+="์์ด๋: "+user_id; data+="<br>"; data+="ํจ์ค์๋: "+user_pw; data+="<br>"; data+="์ฃผ์: "+user_address; data+="<br>"; data+="์ด๋ฉ์ผ: "+user_email; data+="<br>"; data+="์ ํ๋ฒํธ: "+user_hp; data+="<br>"; out.print(data); user_address = URLEncoder.encode(user_address,"utf-8");//GET๋ฐฉ์์ผ๋ก ํ๊ธ์ ์ ์กํ๊ธฐ ์ํด ์ธ์ฝ๋ฉํ๋ค. out.print("<a href='/second?user_id="+user_id+"&user_pw="+user_pw+"&user_address="+user_address+"'>๋ ๋ฒ์งธ ์๋ธ๋ฆฟ์ผ๋ก ๋ณด๋ด๊ธฐ</a>");//a ํ๊ทธ๋ฅผ ์ด์ฉํด ๋งํฌ ํด๋ฆญ ์ ์๋ธ๋ฆฟ // /second๋ก ๋ค์ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์ ์กํ๋ค. data+="</body></html>"; } @Override public void destroy() { System.out.println("destroy ๋ฉ์๋ ํธ์ถ"); } }
**2.**SecondServlet.java๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.์ฒซ ๋ฒ์งธ ์๋ธ๋ฆฟ์์ ์ ์กํ ๋ฐ์ดํฐ ์ค ID์ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ฐ์ ธ์์ผ๋ฉด ์ด๋ฏธ ์ฒซ ๋ฒ์งธ ์๋ธ๋ฆฟ์์ ๋ก๊ทธ์ธํ ๊ฒ์ด๋ฏ๋ก ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์งํ๋๋ก ํ๋ค.
package sec01.ex02; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @WebServlet("/second") public class SecondServlet extends HttpServlet { @Override public void init() throws ServletException { System.out.println("init ๋ฉ์๋ ํธ์ถ"); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); /* * ์ฒซ ๋ฒ์งธ ์๋ธ๋ฆฟ์์ ์ ์กํ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค */ String user_id = req.getParameter("user_id"); String user_pw = req.getParameter("user_pw"); String user_address = req.getParameter("user_address"); out.println("<html><body>"); if(user_id!=null && user_id.length() != 0){ out.println("์ด๋ฏธ ๋ก๊ทธ์ธ ์ํ์ ๋๋ค.<br><br>"); out.println("์ฒซ ๋ฒ์งธ ์๋ธ๋ฆฟ์์ ๋๊ฒจ์ค ์์ด๋ : " + user_id+"<br>"); out.println("์ฒซ ๋ฒ์งธ ์๋ธ๋ฆฟ์์ ๋๊ฒจ์ค ๋น๋ฐ๋ฒํธ: "+user_pw+"<br>"); out.println("์ฒซ ๋ฒ์งธ ์๋ธ๋ฆฟ์์ ๋๊ฒจ์ค ์ฃผ์: " +user_address+"<br>"); out.println("</body></html>"); }else { out.println("๋ก๊ทธ์ธ ํ์ง ์์์ต๋๋ค.<br><br>"); out.println("๋ค์ ๋ก๊ทธ์ธํ์ธ์!"); out.println("<a href='login.html'>๋ก๊ทธ์ธ ์ฐฝ์ผ๋ก ์ด๋ํ๊ธฐ</>"); } } @Override public void destroy() { System.out.println("destroy ๋ฉ์๋ ํธ์ถ"); } }
-
์ฟ ํค๋ ์น ํ์ด์ง๋ค ์ฌ์ด์ ๊ณต์ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ PC์ ์ ์ฅํด ๋๊ณ ํ์ํ ๋ ์ฌ๋ฌ ์น ํ์ด์ง๋ค์ด ๊ณต์ ํด์ ์ฌ์ฉํ ์ ์๋๋ก ๋งค๊ฐ ์ญํ ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ฟ ํค์ ํน์ง
- ์ ๋ณด๊ฐ ํด๋ผ์ด์ธํธ PC์ ์ ์ฅ๋ฉ๋๋ค.
- ์ ์ฅ ์ ๋ณด ์ฉ๋์ ์ ํ์ด ์๋ค.
- ๋ณด์์ด ์ทจ์ฝํ๋ค
- ํด๋ผ์ด์ธํธ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ ์ ๋ฌด๋ฅผ ์ค์ ํ ์ ์๋ค.
- ๋๋ฉ์ธ๋น ์ฟ ํค๊ฐ ๋ง๋ค์ด์ง๋ค(์น ์ฌ์ดํธ๋น ํ๋์ ์ฟ ํค๊ฐ ๋ง๋ค์ด์ง๋๋ค.)
์ฟ ํค๋ ํด๋ผ์ด์ธํธ PC์ ์ ๋ณด๋ฅผ ์ ์ฅํด์ ์ฌ์ฉํ๋ฏ๋ก ๋ณด์์ ์ทจ์ฝํ๋ค. ๋ฐ๋ผ์ ์ฟ ํค๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ์ ์ฃผ๋ก ๋ณด์๊ณผ ๋ฌด๊ดํ ๊ฒฝ์ฐ์ ํํด ์ฌ์ฉํ๋ค. ์๋ฅผ ๋ค์ด ์ฐ๋ฆฌ๊ฐ ์น ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ์ ๋ ์ด๋ค ํ์ ์ฐฝ์ด ๋ํ๋๋ฉด '์ค๋์ ๋ ์ด์ ๋ณด์ง ์๊ธฐ'๋ฅผ ์ฒดํฌํ๋๋ฐ, ์ด์ฒ๋ผ ํ์ ์ฐฝ์ด ๋ํ๋์ง ์๊ฒ ํ๋ ๊ฒฝ์ฐ ๋ฑ์ ์ฌ์ฉํ๋ค.
์์ฑ Persistence์ฟ ํค Session์ฟ ๊ธฐ ์์ฑ ์์น ํ์ผ๋ก ์์ฑ ๋ธ๋ผ์ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ ์ข ๋ฃ ์๊ธฐ ์ฟ ํค๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์ฟ ํค ์ค์ ๊ฐ์ด ์ข ๋ฃ๋ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข ๋ฃํ ๊ฒฝ์ฐ ์ต์ด ์ ์ ์ ์ ์ก ์ฌ๋ถ ์ต์ด ์ ์ ์ ์๋ฒ๋ก ์ ์ก ์ต์ด ์ ์ ์ ์๋ฒ๋ก ์กx ์ฉ๋ ๋ก๊ทธ์ธ ์ ๋ฌด ๋๋ ํ์ ์ฐฝ์ ์ ํํ ๋ ์ฌ์ดํธ ์ ์ ์ Session ์ธ์ฆ์ ๋ณด๋ฅผ ์ ์งํ ๋
๋ธ๋ผ์ฐ์ ์์ ์น ์ฌ์ดํธ์ ์ต์ด ์ ์ํ๋ฉด ์น ์๋ฒ์์ ์ฟ ํค๋ฅผ ์์ฑํด ํด๋ผ์ด์ธํธ๋ก ์ ์กํ๋ค.๊ทธ๋ฆฌ๊ณ ๋ธ๋ผ์ฐ์ ๋ ์ฟ ํค๋ฅผ ํ์ผ๋ก ์ ์ฅํ๋ค.์ดํ ๋ค์ ์ ์ํด ์๋ฒ๊ฐ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ฟ ํค ์ ์ก์ ์์ฒญํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์ฟ ํค ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์กํ๊ณ ์๋ฒ๋ ์ฟ ํค ์ ๋ณด๋ฅผ ์ด์ฉํด์ ์์ ์ ํ๋ค.
- ์ต์ด ์ฌ์ดํธ ์ ์ ์
- ๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ์ ์ ์ํ๋ค.
- ์๋ฒ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ฟ ํค๋ฅผ ์์ฑํ๋ค.
- ์์ฑ๋ ์ฟ ํค๋ฅผ ๋ธ๋ผ์ฐ์ ๋ก ์ ์กํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์ฟ ํค ์ ๋ณด๋ฅผ ์ฟ ํค ํ์ผ์ ์ ์ฅํ๋ค.
- ์ฌ์ ์ ์ 5. ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค์ ์ ์ํด ์๋ฒ๊ฐ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ฟ ํค ์ ์ก์ ์์ฒญํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์ฟ ํค ์ ๋ณด๋ฅผ ์๋ฒ์ ๋๊ฒจ์ค๋ค. 6. ์๋ฒ๋ ์ฟ ํค ์ ๋ณด๋ฅผ ์ด์ฉํด ์์ ์ ํ๋ค.
- ์ฟ ํค๋ Cookieํด๋์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ ๋ณด๋ฅผ ์ ์ฅํ ํ ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ ์กํด ํ์ผ๋ก ์ ์ฅ๋๋ค. ์ฟ ํค๊ด๋ จ API์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
- javax.servlet.http.Cookie๋ฅผ ์ด์ฉํ๋ค.
- HttpServletResponse์ addCookie() ๋ฉ์๋๋ฅผ ์ด์ฉํด ํด๋ผ์ด์ธํธ ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค๋ฅผ ์ ์กํ ํ ์ ์ฅํฉ๋๋ค.
- HttpServletRequest์ getCookie() ๋ฉ์๋๋ฅผ ์ด์ฉํด ์ฟ ํค๋ฅผ ์๋ฒ๋ก ๊ฐ์ ธ์จ๋ค.
๋ฉ์๋ | ์ค๋ช |
---|---|
getComment() | ์ฟ ํค์ ๋ํ ์ค๋ช ์ ๊ฐ์ ธ์จ๋ค. |
getDomain() | ์ฟ ํค์ ์ ํจํ ๋๋ฉ์ธ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค. |
getMaxAge() | ์ฟ ํค ์ ํจ๊ธฐ๊ฐ์ ๊ฐ์ ธ์จ๋ค. |
getName() | ์ฟ ํค ์ด๋ฆ์ ๊ฐ์ ธ์จ๋ค. |
getPath() | ์ฟ ํค์ ๋๋ ํฐ๋ฆฌ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค. |
getValue() | ์ฟ ํค์ ์ค์ ๊ฐ์ ๊ฐ์ ธ์จ๋ค. |
setComment(String) | ์ฟ ํค์ ๋ํ ์ค๋ช ์ ์ค์ ํ๋ค. |
setDomain(String) | ์ฟ ํค์ ์ ํจํ ๋๋ฉ์ธ์ ์ค์ ํ๋ค. |
setMaxAge(int) | ์ฟ ํค ์ ํจ ๊ธฐ๊ฐ์ ์ค์ ํ๋ค. |
setValue(String) | ์ฟ ํค ๊ฐ์ ์ค์ ํ๋ค. |
์ฟ ํค ์์ฑ ์ setMaxAge() ๋ฉ์๋ ์ธ์ ๊ฐ์ ์ข ๋ฅ๋ฅผ ์ง์ ํด์ ํ์ผ์ ์ ์ฅํ๋ Persistence ์ฟ ํค๋ฅผ ๋ง๋ค๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ์๋ง ์ ์ฅํ๋ Session ์ฟ ํค๋ฅผ ๋ง๋ค ์ ์๋ค. ์ฆ setMaxAge() ๋ฉ์๋๋ฅผ ์ด์ฉํ ์ฟ ํค ์ ์ฅ ๋ฐฉ์์ ๋ค์ ๋ ๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
์ธ์ ๊ฐ์ผ๋ก ์์๋ setMaxAge() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ฟ ํค๋ฅผ ๋ง๋ค๋ฉด Session ์ฟ ํค๋ก ์ ์ฅ๋๋ค.
1.Cookie ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ ์ฟ ํค ์ด๋ฆ์ cookieTest๋ก ๊ฐ์ ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ setMaxAge() ๋ฉ์๋์ ์ฟ ํค ์ ํจ ์๊ฐ์ 24์๊ฐ์ผ๋ก ์ค์ .๊ทธ๋ฐ ๋ค์ response์ addCookie()๋ฉ์๋๋ฅผ ์ด์ฉํด ์์ฑ๋ ์ฟ ํค๋ฅผ ๋ธ๋ผ์ฐ์ ๋ก ์ ์กํ๋ค.
package sec02.ex01;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Date;
@WebServlet("/set")
public class SetCookieValue extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
Date date = new Date();
Cookie c = new Cookie("cookieTest", URLEncoder.encode("JSPํ๋ก๊ทธ๋๋ฐ์
๋๋ค.","utf-8"));
//c.setMaxAge(24*60*60);
c.setMaxAge(-1); // ์ฟ ํค๋ฅผ session์ผ๋ก ์ค๋ช
ํ๋ ๋ฐฉ๋ฒ ์์๋ฅผ ๋๊ฒจ์ฃผ
resp.addCookie(c);
out.println("ํ์ฌ์๊ฐ: "+date);
out.println("ํ์ฌ ์๊ฐ์ Cookie๋ก ์ ์ฅํ๋ค.");//์ด๊ฒ ๋ฌด์จ ๋ง์ด์ง....?
}
}
2.๋ ๋ฒ์งธ ์๋ธ๋ฆฟ ์์ฒญ ์์๋ request์ getCookies() ๋ฉ์๋๋ฅผ ํธ์ถํด ๋ธ๋ผ์ฐ์ ๋ก๋ถํฐ ์ฟ ํค๋ฅผ ์ ๋ฌ๋ฐ๋๋ค ๊ทธ๋ฆฌ๊ณ ์ ๋ฌ๋ ์ฟ ํค์์ ์ ์ฅํ ๋ ์ฌ์ฉํ ์ด๋ฆ์ธ cookieTest๋ก ๊ฒ์ํด ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
package sec02.ex01;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
@WebServlet("/get")
public class GetCookieValue extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
Cookie[] allValues = req.getCookies();
for(int i=0; i<allValues.length;i++){
if(allValues[i].getName().equals("cookieTest")){
out.println("<h2>Cookie ๊ฐ ๊ฐ์ ธ์ค๊ธฐ :"+ URLEncoder.encode(allValues[i].getValue(),"utf-8"));
}
}
}
}
1.์น ํ์ด์ง๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ก๋๋ ๋ pageLoad()ํจ์๋ฅผ ํธ์ถํ ํ ์ฟ ํค์ ์ ๊ทผํด ํ์ ์ฐฝ ๊ด๋ จ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค. getCookieValue() ํจ์๋ฅผ ํธ์ถํ์ฌ ์ฟ ํค ์ด๋ฆ notShowPop์ ๊ฐ์ด true๊ฐ ์๋๋ฉด ํ์ ์ฐฝ์ ๋ํ๋ด๊ณ , notShowPop์ ๊ฐ์ด true์ด๋ฉด ํ์ ์ฐฝ์ ๋ํ๋ด์ง ์๋๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฟ ๊ธฐ ์ฌ์ฉ</title>
<script type="text/javascript">
window.onload = pageLoad;<!-- ๋ธ๋ผ์ฐ์ ์ ์น ํ์ด์ง๊ฐ ๋ก๋๋ ๋ pageLoad()ํจ์๋ฅผ ํธ์ถํ์ฌ ์คํํ๋ค. -->
function pageLoad() {
notShowPop = getCookieValue();
if(notShowPop!="true"){
window.open("popUp.html","pop","width=200,height=300,history=no,resizable=no,status=no,scrollbars=yes,menubar=no");
}
}
function getCookieValue() {
var result = "false";
if(document.cookie != "") {
cookie = document.cookie.split(";");<!-- document์ cookie ์์ฑ์ผ๋ก ์ฟ ํค ์ ๋ณด๋ฅผ ๋ฌธ์์ด๋ก ๊ฐ์ ธ์จ ํ ์ธ๋ฏธ์ฝ๋ก (;)์ผ๋ก ๋ถ๋ฆฌํด ๊ฐ๊ฐ์ ์ฟ ํค๋ฅผ ์ป์ต๋๋ค. -->
for (var i = 0; i < cookie.length; i++) {
element = cookie[i].split("=");
value = element[0];
value = value.replace(/^\s*/, '');<!-- ์ ๊ท์์ ์ด์ฉํด ์ฟ ํค ์ด๋ฆ ๋ฌธ์์ด์ ๊ณต๋ฐฑ(โฉs)์ ์ ๊ฑฐํ๋ค. -->
if (value == "notShowPop") {
result = element[1]; <!-- ์ฟ ํค ์ด๋ฆ์ด notShowPop์ด๋ฉด ํด๋นํ๋ ์ฟ ํค ๊ฐ์ ๊ฐ์ ธ์ ๋ฐํํฉ๋๋ค. -->
}
}
}
return result;
}
function deleteCookie() {
document.cookie = "notShowPop=" + "false" + ";path=/; expires=-1";
}
</script>
</head>
<body>
<form>
<input type="button" value="์ฟ ํค ์ญ์ " onclick="deleteCookie()">
</form>
</body>
</html>
- ์ ๊ท์ ๊ณต๋ถํ๊ธฐ
- cookieํํ ๋ค์ ๋ณด๊ณ javascript์ document.cookie ์์๋ณด๊ณ ๋ฌธ์ํํ๊ธฐ
2.popUp.html์์๋ ์ค๋ ๋ ์ด์ ํ์ ์ฐฝ ๋์ฐ์ง ์๊ธฐ์ ์ฒดํฌํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ํจ์์ธ setPopUpStart()ํจ์๋ฅผ ํธ์ถํด notShowPop์ ๊ฐ์ true๋ก ์ค์ ํ์ฌ ์ฌ์ ์ ์ ํ์ ์ฐฝ์ ๋ํ๋ด์ง ์๋๋ก ์ค์ ํ๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>์์</title>
<script type="text/javascript">
function setPopUpStart(obj) {
if(obj.checked == true){
var expireDate = new Date();
expireDate.setMonth(expireDate.getMonth()+1);<!-- ์ ํจ๊ธฐ๊ฐ์ ํ ๋ฌ๋ก ์ ํ๋ค. -->
document.cookie = "notShowPop=" +"true"+";path=/;expires="+expireDate.toString();<!-- ์ค๋ ๋ ์ด์ ํ์
์ฐฝ ๋์ฐ์ง ์๊ธฐ์ ์ฒดํฌํ๋ฉด notShowPop ์ฟ ํค ๊ฐ์ true๋ก ์ค์ ํ์ฌ ์ฌ์ ์์ ํ์
์ฐฝ์ ๋ํ๋ด์ง ์๋๋ค.-->
window.close();
}
}
</script>
</head>
<body>
์๋ฆผ ํ์
์ฐฝ์
๋๋ค.
<br><br><br><br><br><br><br>
<form>
<input type="checkbox" onclick="setPopUpStart(this)">์ค๋ ๋ ์ด์ ํ์
์ฐฝ ๋์ฐ์ง ์๊ธฐ
</form>
</body>
</html>