쿠키(Cookie)

10829 단어 SpringSpring

쿠키(Cookie)의 정의

이름과 값의 쌍으로 구성된 정보를 의미한다.

쿠키에는 기본적으로 아스키 문자만 저장할 수 있고 한글을 저장하려면 url 인코딩을 해야한다.

쿠키 작동 과정

서버에서 생성 -> 브라우저에 저장 -> 유효기간 지나면 자동삭제

쿠키 생성

요청을 받으면 서버에서 쿠키를 생성하는 과정

//쿠키를 생성한다
Cookie cookie = new Cookie("id", "member");

//쿠키의 유효기간을 설정해준다(초단위)
cookie.setMaxAage(60*60*24);

//응답으로 쿠키를 전달한다
response.addCookie(cookie);

쿠키 삭제

//삭제할 쿠키와 같은 이름으로 쿠키를 생성한다
Cookie cookie = new Cookie("id", "");

//쿠키의 유효기간을 0으로 설정한다(삭제)
cookie.setMaxAage(0);

//응답으로 쿠키를 전달한다
response.addCookie(cookie);

쿠키로 로그인 상태 표시하기

쿠키에 아이디 비밀번호 정보가 있으면 로그인 페이지에 표시한다

<input type="text" name="id" placeholder="이메일 입력" autofocus>
<input type="password" name="pwd" placeholder="비밀번호">
    <button>로그인</button>
        <div>
            <label><input type="checkbox" name="rememberId" > 아이디 기억</label> |
            <a href="">비밀번호 찾기</a> |
            <a href="">회원가입</a>
        </div>
        

쿠키를 사용해 아이디와 아이디기억하기

<input type="text" name="id" placeholder="이메일 입력" autofocus value="${cookie.id.value}">
<input type="password" name="pwd" placeholder="비밀번호">
    <button>로그인</button>
        <div>
            <label><input type="checkbox" name="rememberId" ${empty cookie.id.value ? "":"checked"} > 아이디 기억</label> |
            <a href="">비밀번호 찾기</a> |
            <a href="">회원가입</a>
        </div>

브라우저에서 쿠키 생성

id의 값을 member로 설정했다

쿠키에 설정한 id값과 아이디 기억란에 체크가 표시된다

컨트롤러에서 쿠키 생성

import javax.servlet.http.Cookie;

@Controller
@RequestMapping("/login")
public class LoginController {

    @PostMapping("/login")
    public String login(String id, String pwd, boolean rememberId) throws UnsupportedEncodingException {
    
        System.out.println("id:" + id);
        System.out.println("password:" + pwd);
        System.out.println("rememberId:" + rememberId);

        if(rememberId) {
            //rememberId가 true면 쿠키 생성
            //쿠키 생성하기
            Cookie cookie = new Cookie("id", id);

            //응답으로 저장
            response.addCookie(cookie);
        } else {
            //rememberId가 false면 쿠키 삭제
            Cookie cookie = new Cookie("id", id);
            cookie.setMaxAge(0); //삭제
            //응답으로 저장
            response.addCookie(cookie);
            
        }



        return "redirect:/";
    }

좋은 웹페이지 즐겨찾기