[JSP] 9.쿠키(Cookie)

2020. 9. 10. 11:53·💻 Dev/JSP & Servlet

 

 

Cookie란?

쿠키를 부스러기가 남는 것처럼 프로그램에서 흔적을 남기는 것이다.(클라이언트에 저장)

이전에 있었던 클라이언트와 서버의 접속을 이어나가는 의미

 

우리가 사용하는 HTTP 프로토콜은 request, response 과정을 한번 거치면 

클라이언트와 서버의 연결을 바로 해제해버린다. (자원 낭비, 서버 부하 방지)

이때 Cookie라는 클래스를 사용하여, 기존 연결 정보를 저장했다가 다시 연결해준다.

 

  • cookie 변수 = new Cookie(이름,값);  -> 쿠키 생성
  • Cookie[] 변수 = request.getCookies(); -> 쿠키 받아오기(여러 개라 배열로)
  • response.addCookie(쿠키); -> 쿠키 저장
  • 쿠키.setMaxAge(60*60) -> 쿠키의 유효기간을 60초*60초 = 1시간
예제

login.jsp

<body>
	<form action="loginCon" method="post">
		ID : <input type="text" name="mID"></br>
		PW : <input type="password" name="mPW"></br>
		<input type="submit" value="login">
	</form>
</body>

 

간단하게 아이디와 패스워드를 입력받는 login.jsp를 만들었다.

입력하고 login을 누르면 LoginCon 서블릿으로 데이터를 보낸다.

 

LoginCon.java

@WebServlet("/loginCon")
public class LoginCon extends HttpServlet {


	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		String mId = request.getParameter("mID"); //mId변수에 사용자가 입력한 아이디 받아옴
		String mPw = request.getParameter("mPW"); //mPw변수에 사용자가 입력한 패스워드 받아옴
		
		Cookie[] cookies = request.getCookies(); //클라이언트에 저장돼있는 쿠키 받아옴
		Cookie cookie = null; //일단 쿠키는 null로 저장
		
		for (Cookie c : cookies) { //for문으로 배열 안에 있는 쿠키들 검색
			System.out.println("c.getName() : " + c.getName() + ", c.getValue() : " + c.getValue());
			
			if(c.getName().equals("memberId")) { //memberId의 이름을 갖는 쿠키의 정보를 담음
				cookie = c;
			}
		}
		
		if(cookie == null) { //만약 쿠키가 없다면
			System.out.println("cookie is null");
			cookie = new Cookie("memberId", mId); //쿠키 생성
		}
		
		response.addCookie(cookie); //쿠키 저장
		cookie.setMaxAge(60*60);	//쿠키 유효시간 60초 * 60초 = 1시간
		
		response.sendRedirect("loginOk.jsp"); //loginOk.jsp로 응답
		
	}

loginOk.jsp

 <body>
		<%
			Cookie[] cookies = request.getCookies();
			for(Cookie c : cookies) {
				out.print("name : " + c.getName() + "</br>");
				out.print("value : " + c.getValue() + "</br></br>");
			}
		%>
    </body>

로그인 성공 시 쿠키의 이름과 밸류값을 찍어준다.

난 아이디에 hyun을 입력했기 때문에 정상적으로 hyun이 출력됨^^

자! 이제 로그인을 하려고할 때 cookie값이 있는지 확인하여, 있다면 login 폼 대신 바로 로그인 된 상태의 창으로 갈 수 있게 해야한다.

login.jsp를 수정하자

 

login.jsp

<body>	
	<%
        	//저장된 쿠키를 가져옴
		Cookie[] cookies = request.getCookies();
		System.out.println("cookies : " + cookies);
			
        	 //쿠키가 비어있는지 검사
		if(cookies != null) {
			for(Cookie c : cookies) {          	
			  if(c.getName().equals("memberId")) {		//"memberId"라는 이름의 쿠키가 있으면 	
				response.sendRedirect("loginOk.jsp");   //로그인 완료 화면으로 이동
				}
			}
		}
	%>
		
	<form action="loginCon" method="post">
		ID : <input type="text" name="mID"></br>
		PW : <input type="password" name="mPW"></br>
		<input type="submit" value="login">
	</form>
</body>

 

 

 

[참고] 인프런 - 백기선 님의 실전 JSP - 신입 프로그래머를 위한 강좌를 보고 공부한 내용을 바탕으로 작성했습니다.

저작자표시 비영리 (새창열림)

'💻 Dev > JSP & Servlet' 카테고리의 다른 글

[JSP] 게시판 미니 프로젝트 - MVC2패턴 적용  (0) 2020.10.26
[JSP] 11.JDBC(Java Database Connectivity)  (0) 2020.09.16
[JSP] 10.세션(Session)  (0) 2020.09.15
[JSP] 8.jsp request,response  (0) 2020.09.01
[JSP] 7.form 데이터 처리  (0) 2020.08.31
[JSP] 6.Servlet 생명주기(Life-Cycle)  (0) 2020.08.30
'💻 Dev/JSP & Servlet' 카테고리의 다른 글
  • [JSP] 11.JDBC(Java Database Connectivity)
  • [JSP] 10.세션(Session)
  • [JSP] 8.jsp request,response
  • [JSP] 7.form 데이터 처리
현주먹
현주먹
끄적끄적 개발.log
  • 현주먹
    현주먹의 개발로그
    현주먹
  • 전체
    오늘
    어제
    • 전체글 (162)
      • 👶🏻 CS (15)
        • Operating System (8)
        • Database (4)
        • Data Structure (2)
        • Software Engineering (1)
      • 💻 Dev (54)
        • Java & OOP (24)
        • Spring (4)
        • JPA (5)
        • Test Code (1)
        • Database (1)
        • JSP & Servlet (13)
        • Etc (6)
      • 💡 Algorithm (25)
        • 인프런 (9)
        • 백준 (16)
      • 🛠 DevOps & Tool (11)
        • Linux (4)
        • AWS (1)
        • Git (2)
        • Etc (4)
      • 📝 끄적끄적 (57)
        • 후기 및 회고 (5)
        • TDD, 클린 코드 with Java 17기 (3)
        • F-Lab (23)
        • 🖥️ 자바의 정석 (11)
        • 📖 Clean Code (3)
        • 항해99 코테 스터디 (11)
  • 블로그 메뉴

    • 🐈‍⬛ GitHub
    • TIL
  • 인기 글

  • 태그

    개발자취업
    NextSTEP
    99클럽
    til
    에프랩
    ==와 equals()
    자바의신절판
    인프런 특정문자뒤집기
    개발자멘토링
    F-Lab
    객체지향
    티스토리챌린지
    PostGreSQL함수
    데브클럽
    에프랩 후기
    백준
    인프런 단어뒤집기
    자바의정석
    오라클
    백준10250
    항해99
    코딩테스트준비
    JPA
    코테스터디
    C
    오블완
    TDD 클린 코드 with Java
    f-lab 후기
    jsp
    로또 미션
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
현주먹
[JSP] 9.쿠키(Cookie)
상단으로

티스토리툴바