Cookie[] cookies=request.getCookies();
//request.getCookies로 쿠키 정보를 읽어온다.
//쿠키가 여러개일 수 있으니 배열로 받는다.
for(Cookie cookie:cookies) {
String name = cookie.getName();
String value = cookie.getValue();
System.out.printf("[cookie]name=%s, value=%s%n", name, value);
}
@Controller
@RequestMapping("/login")
public class LoginController {
@GetMapping("/login")
public String loginForm(){
return "loginForm";
}
@PostMapping("/login")
public String login(String id, String pwd, String rememberId, HttpServletResponse response) throws Exception{
if(!loginCheck(id,pwd)){
String msg = URLEncoder.encode("id 또는 pwd가 일치하지 않습니다.", "utf-8");
return "redirect:/login/login?msg="+msg;
}
//아이디와 패스워드가 일치하면 쿠키를 생성하고 홈으로 이동한다.
Cookie cookie = new Cookie("id", id); //쿠키 생성
response.addCookie(cookie); //응답에 쿠키를 저장한다.
return "redirect:/"; //홈으로 이동한다.
}
private boolean loginCheck(String id, String pwd){
return "user".equals(id) && "1234567".equals(pwd);
}
}
위의 코드를 리팩토링해본다.
@Controller
@RequestMapping("/login")
public class LoginController {
@GetMapping("/login")
public String loginForm(){
return "loginForm";
}
@PostMapping("/login")
public String login(String id, String pwd, String rememberId, HttpServletResponse response) throws Exception{
if(!loginCheck(id,pwd)){
String msg = URLEncoder.encode("id 또는 pwd가 일치하지 않습니다.", "utf-8");
return "redirect:/login/login?msg="+msg;
}
if(rememberId){
//아이디와 패스워드가 일치하면 쿠키를 생성하고 홈으로 이동한다.
Cookie cookie = new Cookie("id", id); //쿠키 생성
} else {
//쿠키 삭제
Cookie.setMaxAge(0); //쿠키 삭제
response.addCookie(cookie); //응답에 쿠키를 저장한다.
}
return "redirect:/"; //홈으로 이동한다.
}
private boolean loginCheck(String id, String pwd){
return "user".equals(id) && "1234567".equals(pwd);
}
}