Spring & Springboot/올인원 스프링 프레임워크

뷰와 로그인 기능 구현

YJ_ma 2023. 9. 22. 23:21

뷰 구현

· 클라이언트 요청(request)을 처리하는 서버의 컨트롤러, 서비스, DAO를 모두 구현했다.

· 이제 서버에서 클라이언트로 응답(response)하는데 필요한 뷰(View)를 구현한다.

· 뷰는 JSP파일로 webapp\WEB-INF\views\에 sign_up_ok.jsp로 만든다.

■ sign_up_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

This page is SIGN_UP_OK.

</body>
</html>

이제 MemberController에 signUpConfirm()을 반환하는 코드로 sign_up_ok.jsp로 설정해준다.

@RequestMapping("/signUpConfirm")
public String signUpConfirm(MemberVo memberVo) {
    System.out.println("[MemberController] signUpConfirm()");

    System.out.println("m_id: " + memberVo.getM_id());
    System.out.println("m_pw: " + memberVo.getM_pw());
    System.out.println("m_mail: " + memberVo.getM_mail());
    System.out.println("m_phone: " + memberVo.getM_phone());

    memberService.signUpConfirm(memberVo);

    return "sign_up_ok";
}
sign_up.jsp 서버 로그(log) sign_up_ok.jsp

 

로그인 기능 구현

1. sign_in.jsp에 <form>을 이용해서 로그인에 필요한 양식을 만든다.

<form>의 action 속성에는 /hello/signInConfirm으로 명시한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>This page is SIGN_IN.</h3>
	
	<form action="/hello/signInConfirm">
		ID : <input type="text" name="m_id"> <br/>
		PW : <input type="password" name="m_pw"> <br/>
		<input type="submit" value="SIGN IN">
		<input type="reset" value="CANCEL">
	</form>
</body>
</html>

2. MemberController에 사용자의 요청(/signInConfirm)을 처리할 수 있는 메서드(signInConfirm())를 만들고 @RequestMapping을 이용해서 /signInConfirm을 signInConrfirm()에 매핑한다.

@RequestMapping("/signInConfirm")
public String signInConfirm(MemberVo memberVo) {
    System.out.println("[MemberController] signInConfirm()");

    return null;
}

3. MemberController의 signInConfirm()에서 MemberService의 로그인 관련 메서드를 호출하기 위해 MemberService의 signInConfirm()을 선언한다.

public MemberVo signInConfirm(MemberVo memberVo) {
    System.out.println("[MemberService] signInConfirm()");

    return null;
}

4. MemberService에 signInConfirm()을 선언했다면 MemberController의 signInConfirm()에서 MemberService의 signInConfirm()을 호출하는 코드를 추가한다.

@RequestMapping("/signInConfirm")
public String signInConfirm(MemberVo memberVo) {
    System.out.println("[MemberController] signInConfirm()");

    MemberVo signInedMember = memberService.signInConfirm(memberVo);

    return null;
}

5. signInConfirm()에서 MemberDao의 로그인 관련 메서드를 호출하기 위해 MemberDao에서 selectMember()을 선언한다.

public MemberVo selectMember(MemberVo memberVo) {
    System.out.println("[MemberDao] selectMember()");

    MemberVo signInedMember = memberDB.get(memberVo.getM_id());

    if (signInedMember != null && memberVo.getM_pw().equals(signInedMember.getM_pw()))
        return signInedMember;
    else
        return null;
}

6. MemberService의 signInConfirm에서 MemberDao의 selectMember()를 호출하는 코드를 작성한다.

public MemberVo signInConfirm(MemberVo memberVo) {
    System.out.println("[MemberService] signInConfirm()");

    MemberVo signInedMember = memberDao.selectMember(memberVo);

    return signInedMember;
}

7. MemberController의 signInConfirm()에서 클라이언트에 응답하기 위해 return 구문을 수정한다.

@RequestMapping("/signInConfirm")
public String signInConfirm(MemberVo memberVo) {
    System.out.println("[MemberController] signInConfirm()");

    MemberVo signInedMember = memberService.signInConfirm(memberVo);

    if (signInedMember != null)
        return "sign_in_ok";
    else
        return "sign_in_ng";
}

8. [views] 폴더에 로그인이 성공한 경우(sign_in_ok.jsp)와 실패한 경우(sign_in_ng.jsp)에 해당하는 JSP파일을 생성한다.

■ sign_in_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

This page is SIGN_IN_OK.

</body>
</html>

■ sign_in_ng.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

This page is SIGN_IN_NG.

</body>
</html>

9. 로그인  기능이 제대로 작동하는지 확인한다.

http://localhost:8090/hello/signUp 경로에 들어가서 사용자 정보를 입력하고 <SIGN UP>버튼을 클릭하여 회원가입을 한다.

사이트 접속 사용자 정보 입력 결과 

http://localhost:8090/hello/signIn 경로에 들어가서 로그인 페이지로 이동한 후 사용자 정보를 입력하여 <SIGN IN>버튼을 클릭하여 결과를 확인한다.

■ 로그인 성공한 경우

■ 로그인 실패한 경우