[프로젝트 개선] - 웹사이트 제작 17. 로그인 실패시 Java에서 alert창 띄우기 (+HttpServletResponse 이용)

JINI·2023년 6월 22일
0
post-thumbnail

 이번엔 로그인 페이지를 개선해 보았다.
이전 페이지는 로그인 실패시 다시 해당 페이지로 돌아가는 것으로 구현했었는데 사용자 입장에서 생각해보면 어떤 문제로 로그인에 실패한건지 알 수 없는 불친절한 사이트가 될 수 있다.
그래서 아이디/비번이 회원가입시 저장된 정보와 달라
로그인에 실패할 경우 HttpServletResponse을 이용해 Java에서 바로 alert창을 띄우기로 했다.



🚩 개선 전 ➡️ 로그인 실패시 다시 로그인 페이지
🚩 개선 후 ➡️ 로그인 실패시 alert창 띄우고 해당 페이지


⚠️로그인 실패시 Controller에서
    alert창 띄우기


✔️HttpServletResponse 이용


코드 전체가 아닌 관련 내용에 필요한 코드만 올렸다.

📕Controller

@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();
    클라이언트와 서버 간의 출력스트림인 PrintWriter를 통해 스크립트 호출하고 응답을 위한 response를 불러온다.

  • response.setCharacterEncoding("utf-8");
    response.setContentType("text/html; charset=utf-8");
    보내는 문서타입과 문자셋 정보를 설정한다.
    응답정보의 헤더에 데이터 타입과 문자코드를 설정해서 보내야지만 한글이 깨지지않고 출력된다.

  • out.println();
    out.close();
    화면에 데이터를 출력하기 위해 out.println를 사용해 작성하고 내용은 <script> 안에 넣어준다.

  • out.println("history.go(-1);)";
    오류시 이전 페이지 로드를 위해 해당 코드를 작성해준다.

profile
꾸준히 성장하는 개발자

0개의 댓글