이번엔 로그인 페이지를 개선해 보았다.
이전 페이지는 로그인 실패시 다시 해당 페이지로 돌아가는 것으로 구현했었는데 사용자 입장에서 생각해보면 어떤 문제로 로그인에 실패한건지 알 수 없는 불친절한 사이트가 될 수 있다.
그래서 아이디/비번이 회원가입시 저장된 정보와 달라
로그인에 실패할 경우 HttpServletResponse을 이용해 Java에서 바로 alert창을 띄우기로 했다.
🚩 개선 전 ➡️ 로그인 실패시 다시 로그인 페이지
🚩 개선 후 ➡️ 로그인 실패시 alert창 띄우고 해당 페이지
코드 전체가 아닌 관련 내용에 필요한 코드만 올렸다.
@PostMapping("user_check")
public String userCheck(HttpServletResponse response) throws IOException {
//로그인 성공시
if(result == 0) {
...
}else { //로그인 실패시
PrintWriter out = response.getWriter();
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
out.println("<script> alert('아이디 또는 비밀번호가 틀립니다.');");
out.println("history.go(-1); </script>");
out.close();
return "redirect:login";
}
}
서버에서 웹 브라우저로 보낸 한글을 출력했을 때 한글이 깨져서 나오기 때문에 응답정보 헤더에 깨짐을 처리하기 위해 설정한다.
PrintWriter out = response.getWriter();
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
out.println();
out.close();
화면에 데이터를 출력하기 위해 out.println를 사용해 작성하고 내용은 <script>
안에 넣어준다.
out.println("history.go(-1);)";
오류시 이전 페이지 로드를 위해 해당 코드를 작성해준다.