-
Cookie를 이용해 상태값 유지하기JSP, Servlet 2021. 12. 12. 23:14
쿠키 저장하기(클라이언트에 보내기)
Cookie cookie = new Cookie("c", String.valueOf(result));
response.addCookie(cookie);
쿠키 읽기
Cookie[] cookies = request.getCookies();
String _c = "";
//쿠키의 키 값을 찾아서 맞는 값을 얻어야 함
if(cookies != null)
for(Cookie cookie : cookies)
if("c".equals(cookie.getName()))
_c = cookie.getValue();Cookie의 path 옵션
서블릿이 여러 개일 때, 서블릿마다 다른 값을 쿠키에 저장하려고 하는 경우 쿠키는 같으면 안 됨.
그 URL에 관련된 서블릿에게만 쿠키를 전달하려고 함
valueCookie.setPath("/");
opCookie.setPath("/");
url을 설정하면 해당하는 url에서만 전달됨Cookie의 maxAge 옵션
maxAge를 설정하지 않으면 브라우저가 닫힐 때 쿠키 값도 사라짐
valueCookie.setMaxAge(60 * 60); //지금으로부터 1시간 동안은 쿠키가 살아있음
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>연습</title> </head> <body> <form action="calc" method="post"> 계산할 값을 입력 하세요. <br> <div> <label>입력 : </label> <input type="text" name="value" /> </div> <div> <input type="submit" name="operator" value="+"/> <input type="submit" name="operator" value="-"/> <input type="submit" name="operator" value="="/> </div> </form> </body> </html>
import java.io.IOException; 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; @WebServlet("/calc") public class Calc extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/html; charset=utf-8"); Cookie[] cookies = request.getCookies(); String v_ = request.getParameter("value"); String op = request.getParameter("operator"); int v = 0; if(!v_.equals("")) { v = Integer.parseInt(v_); } //계산 if(op.equals("=")) { int x = 0; for(Cookie c : cookies) { if(c.getName().equals("value")) { //String이니까 정수형으로 변환 x = Integer.parseInt(c.getValue()); break; } } int y = v; String operator = ""; for(Cookie c : cookies) { if(c.getName().equals("op")) { operator = c.getValue(); break; } } int result = 0; if(operator.equals("+")) { result = x+y; } else { result = x-y; } response.getWriter().printf("결과는 %d입니다. \n", result); //값을 저장 } else { //문자열만 저장하기 때문에 String.valueOf 사용 Cookie valueCookie = new Cookie("value", String.valueOf(v)); Cookie opCookie = new Cookie("op", op); response.addCookie(valueCookie); response.addCookie(opCookie); } } }
'JSP, Servlet' 카테고리의 다른 글
계산기 서블릿 구현하기 (오류 수정 완) (0) 2021.12.13 Application, Session, Cookie의 차이점 정리 (0) 2021.12.13 Session 객체로 상태 값 저장하기 (0) 2021.12.12 Application 객체 (0) 2021.12.12 입력 데이터 배열로 보내기 (0) 2021.12.12