TIL

<스프링 부트 Spring boot> 회원가입 기능 구현

낭만인 2021. 11. 24. 21:59

- 회원가입 기능

스프링 부트에서 회원가입 기능을 구현할 때, 보통 Security를 이용하여 구현하는데 이번 경우에는 Security 없이 구현하였다. 따라서 로그인 기능 구현 코드와 크게 다르지 않다. 구현 순서는 다음과 같다.

 

1) 회원가입 페이지인 jsp에 <input> 태그로 사용자에게서 입력받은 정보를 서버(컨트롤러 서블릿)으로 보낸다.

- method : post 방식으로 서버에 전송한다.

- action : 'join'으로 매핑된 컨트롤러의 메서드로 보낸다.

<form name="join" method="post" action="join" autocomplete="off" encType="utf-8">
		<h3>아이디</h3>
		<input type="text" id="user_id" name="id" placeholder="4자이상" maxlength="15" required autofocus required>
		<h3>비밀번호</h3>
		<input type="password" id="user_pw" name="pw" placeholder="특수문자포함, 10~12자리" required><br>
        <input type="submit" id="signup" value="회원가입">
</form>

 

2) 회원가입 클릭 시 Controller는 웹 브라우저의 요청을 GetMapping으로 받고 Post에서 작업을 처리한다. 회원가입 폼에서 입력한 사용자의 정보는 VO 객체로 받고, 이를 Service의 메서드 호출과 동시에 매개변수로 보낸다.

	@GetMapping("join")
	public void setInsert() throws Exception{};
	
	@PostMapping("join")
	public String setInsert(MemberVO memberVO) throws Exception{
		memberService.setInsert(memberVO);
		return "redirect:../member/login";
	}

 

3) Controller를 통해 메서드를 호출받은 Service는 다시 Repository(구 DAO)의 메서드를 호출한다. 그리고 Service로부터 전달받은 사용자의 입력 정보인 VO 객체도 매개변수로 함께 보낸다. 이후 Repository에서 처리 후 리턴되는 값은 변수 result에 저장한다.

	public int setInsert(MemberVO memberVO) throws Exception{
		int result = memberRepository.setInsert(memberVO);
		return result;
	}

 

4) Repository는 Service에서 전달받은 사용자의 입력 정보인 VO 객체를 통해 작업을 실행한다. 실 작업은 Mapper에서 이루어진다.

public int setInsert(MemberVO memberVO) throws Exception;

 

5) Mapper에서는 DB와의 연동을 통해 sql문을 보내어 사용자가 입력한 정보를 회원정보로 추가한다(추후 중복체크 기능도 추가 구현이 필요하다).

<insert id="setInsert" parameterType="MemberVO">
	insert into destudymember (id, pw)
	values (#{id}, #{pw})
</insert>

 

6) Mapper에서 작업을 마치고 나면, Mapper -> Repository -> Service -> Controller로 처리된 결과가 넘어간다. 정상적으로 처리가 되었다면, Controller에서는 사용자로 하여금 가입 시 작성한 정보를 토대로 로그인할 수 있도록 로그인 페이지로 리다이렉트한다.