-
[Spring] 회원가입 구현하기졸업프로젝트 2021. 10. 25. 15:14
로그인부터 하려고 했으나, Access Token Refresh Token 방식으로 구현하는 것이 막막하게 느껴져서
일단 순한맛 회원가입 먼저 해보려고 한다.
DB
일단 USERS 테이블을 만든다.
create table USERS ( user_id varchar(30) not null primary key, pw char(40) not null, name varchar(10) not null, email varchar(30) not null, profile varchar(50) );
Spring
UserDto.java
package com.hyomin.memomeet.model; public class UserDto { private String user_id; private String pw; private String name; private String email; private String profile; public UserDto() {} public UserDto(String user_id, String pw, String name, String email, String profile) { super(); this.user_id = user_id; this.pw = pw; this.name = name; this.email = email; this.profile = profile; } public String getUser_id() { return user_id; } public void setUser_id(String user_id) { this.user_id = user_id; } public String getPw() { return pw; } public void setPw(String pw) { this.pw = pw; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getProfile() { return profile; } public void setProfile(String profile) { this.profile = profile; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("UserDto [user_id="); builder.append(user_id); builder.append(", pw="); builder.append(pw); builder.append(", name="); builder.append(name); builder.append(", email="); builder.append(email); builder.append(", profile="); builder.append(profile); builder.append("]"); return builder.toString(); } }
UserController.java
@RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @PostMapping public Message SignUp (@RequestBody UserDto user){ System.out.println(user.toString()); Message message = new Message(); try { userService.insert(user); } catch (SQLException e) { e.printStackTrace(); message.setCode(e.getErrorCode()); message.setMessage(e.getMessage()); return message; } message.setCode(0); message.setMessage("request success"); message.setData(user); return message; } }
- Message 클래스를 따로 만들어서 code, message, data를 한번에 보내도록 했다
- Controller -> Service -> Dao 로 전이되며 요청을 처리하게 되고
- Controller에서 에러를 처리한다
React
var myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); var raw = JSON.stringify({ "user_id": user_id, "pw": user_pw, "name": user_name, "email": user_email }); var requestOptions = { method: 'POST', headers: myHeaders, body: raw, redirect: 'follow' }; fetch("/users", requestOptions) .then(response => response.json()) .then(result => { console.log(result); console.log(result.data); if(result.code===0){ alert("회원가입 성공"); window.location.href = "/"; } else if(result.code===1062){ alert("이미 존재하는 아이디입니다.") } }) .catch(error => console.log('error', error));
- POST 요청
- Request parameter는 UserDto의 필드명과 동이랗게 수정하였다
- sql 에러코드를 그대로 반환하게 코드를 작성해서, sql 에러코드로 에러처리
결과
성공했을 때
실패했을 때
사실 중간 과정에서 에러도 많이 나고 우여곡절이 많았는데
이 과정들을 블로그에 다 담고 싶었으나, 다음날까지 미뤄지는 바람에 작성하지 못했다.
다음 과정들은 더욱 세세히 과정을 담을 수 있도록 하겠다!
'졸업프로젝트' 카테고리의 다른 글
[Spring] Connection Pool로 DB 연결하기 (0) 2021.10.24 [Spring] Spring과 React 연동하기 (0) 2021.10.24 [Spring] 프로젝트 시작하기 (0) 2021.10.23 [Node.js] 회의 분석 성능 개선 (node.js에서 파이썬 스크립트 실행하는 다양한 방법) (0) 2021.04.10 [Node.js] child-process 이용하기 (0) 2021.04.10