Spring 쇼핑몰 만들기 -3 회원가입 (1)

레오나·2021년 10월 15일
0

JSTL을 이용하여 화면 나누기

https://startbootstrap.com/template/shop-homepage
여기에서 가져온 소스파일을 home.jsp에 복사 붙여넣기를 합니다.

사진에서 빨간색 네모의 상단과 하단은 어느 버튼을 눌러도 똑같이 보여주기 때문에 소스코드의 중복을 피하기 위해 JSTL의 import를 이용하여 나누어 줍니다.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

home.jsp의 상단과 하단의 중복되는 코드를 복사하여 상단은 top_nave.jsp에 하단은 bottom_info.jsp에 넣고 각각 자리에는 아래의 코드를 대신 넣어줍니다.

<c:import url="/WEB-INF/views/include/top_nav.jsp" />
<c:import url="/WEB-INF/views/include/bottom_info.jsp" />


회원가입

회원가입은
회원가입 및 유효성 검사, 아이디 중복 검사등의 기능이 들어갑니다.

저는 회원 아이디를 기본키로 했고 회원 이름, 비밀번호, 생성날짜, 구분(회원은 기본값인 0, 관리자는 1)으로 했습니다.

부트스트랩을 이용하여 회원가입 폼을 간단하게 만듭니다.

modelAttribute사용을 위하여 Controller에서도 GetMapping을 할 때 modelAttribute를 사용해 줍니다.

	@GetMapping("/member/join")
	public String join(@ModelAttribute("joinMemberBean") MemberVO joinMemberBean) {

		return "member/join";
	}

DB에서 데이터를 받고 modelAttribute사용을 위해 MemberDTO를 작성해 줍니다.
아래의 코드에는 없지만 각 변수에 Getter, Setter도 넣어줍니다.
	
public class MemberDTO {

	private String member_id;	
	private String member_name;
	private String member_password;
	private String member_password2;
	private Date member_createdAt;
	private int verify;
    }

join.jsp 화면을 띄울 때 ModelAttribute를 사용했으니 form태그에도 modelAttribute를 넣어줍니다.

<form:errors>는 유효성 검사를 위해 넣었습니다. 만약 입력한 값이 오류가 있다면 <form:errors>가 나타납니다.

		<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>2.0.1.Final</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
		<dependency>
			<groupId>org.hibernate.validator</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>6.2.0.Final</version>
		</dependency>

유효성 검사를 위해 pom.xml에 라이브러리를 추가합니다.

어노테이션을 이용해 검증을 추가합니다.

	@Size(min = 2, max = 16, message = "길이는 2 ~ 16자 사이어야 합니다")
	@Pattern(regexp = "^([A-Za-z])+([0-9])+$", message = "대소문자와 숫자의 조합이어야 합니다.")
	private String member_id;
	
	@Size(min = 1, message = "길이는 최소 1자 이상입니다.")
	private String member_name;
	
	@Size(min = 4, max = 16, message = "길이는 4 ~ 16자 사이어야 합니다.")
	@Pattern(regexp = "^([A-Za-z])+([0-9])+$", message = "대소문자와 숫자의 조합이어야 합니다.")
	private String member_password;
	
	@Size(min = 4, max = 16, message = "길이는 4 ~ 16자 사이어야 합니다.")
	@Pattern(regexp = "^([A-Za-z])+([0-9])+$", message = "대소문자와 숫자의 조합이어야 합니다.")
	private String member_password2;
	
	private Date member_createdAt;
	private int verify;

DTO에 작성이 완료되면 Controller에서 html으로 부터 넘어온 데이터를 검증하고 회원가입 처리하는 PostMapping을 작성합니다.

	@PostMapping("/member/join")
	public String join_member(@Valid @ModelAttribute("joinMemberBean") MemberDTO joinMemberBean, BindingResult result) {
		
		if(result.hasErrors()) {
			return "member/join";
		}
		memberService.joinMember(joinMemberBean);
		
		return "member/join_success";
	}

검증을 위해 파라미터에 @Valid와 BindingResult를 받아야 하며
만약 검증에 실패하면 되돌아갈 JSP위치를 나타내고, 에러가 생기지 않다면 joinMember를 통해 회원가입을 하도록 합니다.


검증이 되지 않는다면 <form:errors>를 통해 DTO에서 작성했던 message가 출력됩니다.

profile
공부한 것을 기록

0개의 댓글