나의개발일지

회원가입 본문

프로젝트/전자도서관 프로젝트

회원가입

아. 이렇게 하면 될거 같은데.. 2023. 11. 21. 01:26
728x90


회원가입

 

 

ID, 패스워드, 이름, 성별, 파트, 포지션, 이메일, 핸드폰번호를 받아 회원가입을 진행한다.

해당 정보들은 데이터베이스와 연동하여 데이터베이스의 테이블에 저장된다.


구현

1. DAO

DAO는 데이터베이스와 상호작용을 하기 위한 객체이다. DAO는 일반적으로 데이터베이스와 통신하며, 그 내부에서 sql문을 사용하여 데이터를 조작한다.

 

<insert 부분 매서드>

public int insertAdminAccount(AdminMemberVo adminMemberVo) {
		System.out.println("[AdminMemberDao] insertAdminAccount");
		
		List<String> args = new ArrayList<>();
		
		String sql = "insert into tb1_admin_member(";
		if (adminMemberVo.getA_m_id().equals("super admin")) {
			sql += "a_m_approval, ";
			args.add("1");
		}
		
		sql += "a_m_id, ";
		args.add(adminMemberVo.getA_m_id());
		sql += "a_m_pw, ";
//		args.add(adminMemberVo.getA_m_pw());
		args.add(passwordEncoder.encode(adminMemberVo.getA_m_pw()));
		sql += "a_m_name, ";
		args.add(adminMemberVo.getA_m_name());
		sql += "a_m_gender, ";
		args.add(adminMemberVo.getA_m_gender());
		sql += "a_m_part, ";
		args.add(adminMemberVo.getA_m_part());
		sql += "a_m_position, ";
		args.add(adminMemberVo.getA_m_position());
		sql += "a_m_mail, ";
		args.add(adminMemberVo.getA_m_mail());
		sql += "a_m_phone, ";
		args.add(adminMemberVo.getA_m_phone());
		sql += "a_m_reg_date, a_m_mod_date)";
		
		if (adminMemberVo.getA_m_id().equals("super admin")) {
			sql += "values (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())";
		} else {
			sql += "values (?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())";
		}
		
		int result = -1;
		
		result = jdbcTemplate.update(sql, args.toArray());
		
		return result;
	}

 

args 리스트를 하나 만들어서 sql문을 한번에 저장시켜 jdbcTemplate로 sql문을 데이터베이스에 전송시킨다. 데이터베이스는 이 sql문을 받아서 처리한다

2. Controller

컨트롤러(Controller)는 소프트웨어에서 사용자 인터페이스와 데이터 모델 간의 상호 작용을 관리하고 제어하는 부분이다.

 

<회원가입 컨트롤러 메서드>

@Autowired
	AdminMemberService adminMemberService;

	//회원가입 요청
	@GetMapping(value= "/createAccountForm")
	public String createAccountForm() {
		System.out.println("[AdminMemberController] createAccountForm()");
		
		String nextPage = "admin/member/create_account_form";
		return nextPage;
	}
	
	//회원가입 확인
	@PostMapping(value= "/createAccountConfirm")
	public String createAccountConfirm(AdminMemberVo adminMemberVo) {
		System.out.println("[AdminMemberController] createAccountConfirm");
		
		String nextPage = "admin/member/create_account_ok";
		
		
		int result = adminMemberService.createAccountConfirm(adminMemberVo);
		
		if(result <= 0)
			nextPage = "admin/member/create_account_ng";
		
		return nextPage;
	}

 

뷰 간 전환을 하기위한 컨트롤러이다 회원가입 요청부분의 GetMapping방식으로 "/createAccountForm"이 url로 들어오게 되면 WebINF 밑에있는 admin/member/create_account_form.jsp가 뷰로 보여지게된다

회원가입을 할때 이미 등록된 회원일수도 있는 로직은 서비스 부분으로 넘겨서 처리한다.

이미 등록된 회원이 아니라면  "admin/member/create_account_ok.jsp"
이미 등록된 회원이라면 "admin/member/create_account_ng.jsp" 페이지로 넘겨준다

3. Service

서비스(Service)는 주로 비즈니스 로직을 처리하고, 컨트롤러와 모델 간의 중간 역할을 하는 컴포넌트이다.

 

<회원가입 비즈니스 로직 메서드>

public int createAccountConfirm(AdminMemberVo adminMemberVo) {
		System.out.println("[AdminMemberService] createAccountConfirm()");
		
		boolean isMember = adminMemberDao.isAdminMember(adminMemberVo.getA_m_id());
		
		if (!isMember) {
			//회원가입 처리
			int result = adminMemberDao.insertAdminAccount(adminMemberVo);
			
			if(result > 0) 
				return ADMIN_ACOUNT_CREATE_SUCCESS;
			else 
				return ADMIN_ACOUNT_CREATE_FAIL;

			
		} else {
			//이미등록된 회원
			return ADMIN_ACOUNT_ALREADY_EXIST;
			
		}
	}

 

VO객체에서 id값을 불러와 isMember에 저장한다.

만약 isMember가 false면 등록되지 않은 계정이므로 insertAdminAccount()매서드가 실행된다.

등록 결과가 양수이면 계정 생성 성공, 0 이하면 실패

만약 isMember가 true면 이미 등록된 계정

4. VO 객체

VO(Value Object)는 주로 데이터를 나타내는 객체로, 값을 가지고 있는 객체이다. VO는 불변하며 주로 데이터의 전달이나 저장을 목적으로 사용된다.

	int		a_m_no;
	int		a_m_approval;
	String	a_m_id;
	String	a_m_pw;
	String	a_m_name;
	String	a_m_gender;
	String	a_m_part;
	String	a_m_position;
	String	a_m_mail;
	String	a_m_phone;
	String	a_m_reg_date;
	String	a_m_mod_date;
    
    // + getter, setter

 


DB연동

자세한 DB연동은 아래의 포스트를 확인하기 바란다.

https://cacaodotori.tistory.com/5

 

Spring) STS와 MySQL연결하기 for.Mac

0. 사전준비 MySQL과 MySQL WorkBench를 다운로드 하기 전에 기존에 있던 MySQL과 MySQL WorkBench를 삭제한다. (현재 맥 os SONOMA 는 WorkBench가 튕기는 문제가 발생한다.) 1. MySQL, MySQL WorkBench 다운로드 - MySQL 사

cacaodotori.tistory.com

 

 

회원가입 로직이 잘 처리되어서 데이터베이스에 들어왔다.



데이터베이스와 sts를 연동하는데 버전을 맞추느라 꽤나 어려움이있었다. 그래도 서로다른 두 프로그램이 상호 통신하며 연결된 모습을 보니 프로젝트의 규모가 커진것 같아서 나름 뿌듯했다.

 

다음에는 회원가입을 했으니 로그인페이지를 만들어볼 예정이다. 

728x90
반응형

'프로젝트 > 전자도서관 프로젝트' 카테고리의 다른 글

도서등록  (0) 2024.01.07
새 비밀번호 생성 with. e-mail  (1) 2024.01.07
계정 수정  (2) 2023.12.28
로그인, 로그아웃  (0) 2023.12.24
개발환경 세팅  (0) 2023.11.14