login.jsp
<form class="col s12 l6 offset-l3" **action="/member/login" method="post"** >
MemberController.java
@GetMapping("/login")
public String login() {
// <http://localhost:8000/member/login>
return "member/login"; // 경로 잘 써줘야함!!
}
@PostMapping("/login")
public ResponseEntity<String> login(String id, String passwd, HttpSession session) {
MemberVO memberVO = memberService.getMemberById(id);
String message = "";
boolean isSamePasswd = false;
if (memberVO != null) { // 일치하는 아이디 있음
isSamePasswd = BCrypt.checkpw(passwd, memberVO.getPasswd());
if (!isSamePasswd) { // 아이디는 있지만, 패스워드 불일치
message = "패스워드가 일치하지 않습니다.";
}
} else { // 일치하는 아이디 없음
message = "존재하지 않는 아이디 또는 패스워드 입니다";
}
if (memberVO == null || isSamePasswd == false) {
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "text/html; charset=utf-8"); // == setContentType
String str = Script.back(message);
return new ResponseEntity<String>(str, headers, HttpStatus.OK);
}
// ==============================
// 로그인 성공 시 로그인 인증하기
session.setAttribute("id", id);
HttpHeaders headers = new HttpHeaders();
headers.add("Location", "/"); // redirect 경로 지정
// "/"로 리다이렉트
// 리다이렉트일 경우 HttpStatus.FOUND 지정해야함
return new ResponseEntity<String>(headers, HttpStatus.FOUND);
} // login
도대체 ResponseEntity 가 뭐냔말임
: Spring Framework 에서 제공하는 클래스 중 HttpEntity 라는 클래스가 존재.
이는 HTTP 요청 또는 응답에 해당하는 HttpHeader 와 HttpBody 를 포함하고 있음
HttpEntity 를 상속 받아 구현한 클래스가 RequestEntity, ResponseEntity
⇒ 따라서 ResponseEntity 는 사용자의 HttpRequest 에 대한 응답 데이터를 포함하는 클래스
⇒ HttpStatus, HttpHeaders, HttpBody 를 포함함 (오버로딩)