로그인 성공 실패 메세지 참고 블로그
https://kimvampa.tistory.com/122
여기 블로그가 내가 배운 내용으로 설명이 잘 되어있어 활용하기 좋았다.
(1) EL을 사용해서 쿠키에 id값이 있으면 value에 저장.
(2) checkbox에 쿠키에 id값이 있으면 checked, 없으면 빈문자열
$ {empty cookie.id.value ? "" : "checked"}
쿠키값이 비어있다(empty)면 ? → true 일때 - ""
쿠키값이 비어있다(empty)면 ? → faulse 일때 - checked
[삼항연산자] 조건문 ? 참 : 거짓
조건문, 물음표(?), 조건문이 참(truthy)일 경우 실행할 표현식, 콜론(:), 조건문이 거짓(falsy)일 경우 실행할 표현식이 배치
// 로그인 성공,실패 결과
// login.do가 post로 요청이 오면
@RequestMapping(value = "/login.do", method = RequestMethod.POST)
public ModelAndView loginGeneralProc(@ModelAttribute MemberGeneralDTO dto,
HttpServletRequest req,
HttpServletResponse resp,
HttpSession session) throws Exception{
// 사용자가 loginForm에 입력한 아이디(m_id) 와 비밀번호(m_pw) 가져오기.
String id=dto.getM_id();
String pw=dto.getM_pw();
// 아이디 저장 가져오기 <input type="checkbox" ${empty cookie.id.value ? "":"checked" } name="saveId" value="SAVE">아이디 저장</label>
String saveId = req.getParameter("saveId");
//System.out.println(saveId);
// -> 아이디저장 체크를 하면 "SAVE" 값이 들어오고, 체크하지않으면 null값이 들어온다.
// DB에 저장돼있는 아이디와 비밀번호 비교해야함.
dto.setM_id(id);
dto.setM_pw(pw);
// mapper에서 담아온 select문을 DAO에 담아준 후 그 값을 변수에 담아준다. --> B등급 나옴.
String mem_grade = memberGeneralDao.select(dto);
// mapper -> DAO 에 담아온 sql문 값이 있는지? 없는지?
ModelAndView mav = new ModelAndView();
if(!(mem_grade == null)) {
// 로그인 성공
// 로그인 되면 세션값 저장
session.setAttribute("mem_grade", mem_grade);
Cookie cookie=null;
if(saveId!=null) {
cookie = new Cookie("id", id);
cookie.setMaxAge(24 * 30 * 60 * 60 * 1000); //30일간 저장
resp.addCookie(cookie);
}else {
cookie = new Cookie("id", "");
cookie.setMaxAge(0);
resp.addCookie(cookie);
}//if end
// 홈으로 이동
mav.setViewName("redirect:/home");
}else {
// 로그인 실패
// 결과값을 0으로 지정.
int result=0;
// 0 값을 "result"라는 이름으로 사용할 수 있도록 만들어준다.
session.setAttribute("result", result);
// 실패하면 그대로 로그인 페이지에 남아있도록 링크를 걸어준다.
mav.setViewName( "redirect:/login.do");
}//if end
mav.addObject("dto", dto);
return mav;
}//loginGeneralProc() end
// 로그아웃
@RequestMapping("/logout.do")
public String logout(HttpSession session) {
session.invalidate();
return "redirect:/home";
}//logout() end
https://smujihoon.tistory.com/93
→ 컨트롤러에 if문으로 로그인 성공/실패와 + 쿠키값까지 같이 저장할 수 있는 조합과 순서를 많이 참고했다.
https://velog.io/@ch4570/Spring-Cookie-Session-%EC%A0%80%EC%9E%A5%EA%B3%BC-%EC%82%AD%EC%A0%9C-%EC%8B%A4%EC%8A%B5
→ jsp에 쿠키값을 아이디 어느부분에 변수지정을 해줘야 하는지, 아이디저장 체크박스엔 어떻게 변수를 넣어줘야하는지 참고했다.
https://jaehoney.tistory.com/68
여기도 전체적으로 잘 설명되어있다.