졸업프로젝트
[Spring] 회원가입 구현하기
valid_ming
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 에러코드로 에러처리
결과
성공했을 때

실패했을 때

사실 중간 과정에서 에러도 많이 나고 우여곡절이 많았는데
이 과정들을 블로그에 다 담고 싶었으나, 다음날까지 미뤄지는 바람에 작성하지 못했다.
다음 과정들은 더욱 세세히 과정을 담을 수 있도록 하겠다!