개(발)린이
Spring(로그인-2) 본문
저번시간엔 로그인을 하면 컬럼값들을 가져와서 loginMember에 저장후
@SessionAttribute를 이용하여 해당 값을 session scope로 이동시켜 로그인을 유지시키는 것 까지 했다.
이번엔 로그인 할때 이메일과 패스워드를 DB와 틀리게 입력했을때 틀렸다는 메세지를 띄우는 걸 만들어보자
먼저 MemberController 클래스이다.
@Controller
@RequestMapping("/member")
@SessionAttributes({"loginMember", "message"})
public class MemberController {
private Logger logger = LoggerFactory.getLogger(MemberController.class);
@Autowired
private MemberService service;
@PostMapping("/login")
public String login( @ModelAttribute Member inputMember,
Model model,
RedirectAttributes ra,) {
logger.info("로그인 기능 수행됨");
logger.debug(inputMember.getMemberEmail());
logger.debug(inputMember.getMemberPw());
Member loginMember = service.login(inputMember);
if(loginMember != null) { // 로그인 성공시
model.addAttribute("loginMember", loginMember);
} else {
ra.addFlashAttribute("message", "아이디 또는 비밀번호가 일치하지 않습니다.");
}
return "redirect:/";
}
}
여기서 model.addAttribute를 이용하는 것이 아니라 ra.addFlashAttribute를 사용한다.
그리고 주의할 점이 하나 있다.
우현 현재 ra.addFlashAttribute를 사용하여 로그인 실패시 alert창으로 메시지가 뜨게끔 jsp에 코드로 작성되어있따.
<c:if test="${ !empty message }">
<script>
alert("${message}");
// EL 작성 시 scope를 지정하지 않으면
// page -> request -> session -> application 순서로 검색하여
// 일치하는 속성이 있으면 출력
</script>
</c:if>
이때 그냥 실행시키면 로그인을 실패하여도 메시작 출력되지 않는다.
이유는 서블릿을 통해야 작동하는데 index.jsp는 서버를 실행시키자마자 바로 나오는 화면이기에 index.jsp를 따로 main.jsp로 복사해놓고 index.jsp는 forward만 시켜서 돌아가서 실행되게끔 조치를 취해보겠다.
이런식으로 index.jsp에 있는 내용을 main.jsp에 모두 옮겨 적은뒤
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<jsp:forward page="main"/>
index.jsp에는 main을 포워드 해준다.
그 에 main에 대한 Controller 클래스를 만들어 준다.
@Controller // bean 등록
public class MainController {
@RequestMapping("/main")
public String mainForward() {
return "common/main";
}
}
MainController 클래스이다.
서버를 실행시키고 틀린 비밀번호를 입력후 로그인을 클릭해보면?
alert창이 잘 실행되는것을 볼 수 있다.
다음 시간엔 cookie가 생성되게 코드를 수정해 보겠다.
'Spring' 카테고리의 다른 글
Spring(로그아웃 및 쿠키확인) (0) | 2023.04.26 |
---|---|
Spring(로그인-3 cookie) (0) | 2023.04.26 |
Spring(로그인 - 1) (0) | 2023.04.25 |
Spring(조회 - vo파라미터) (0) | 2023.04.25 |
Spring(4) - 기초세팅(pom.xml) (0) | 2023.04.25 |