IDE: IntetlliJ Ultimate
Spring Boot: 3.3.0
JDK: 17
01. DTO 생성
💾 auth > signup.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>page</title>
<link rel="stylesheet" th:href="@{/css/style.css}">
<link rel="stylesheet" th:href="@{https://pro.fontawesome.com/releases/v5.10.0/css/all.css}"
integrity="sha384-AYmEC3Yw5cVb3ZcuHtOA93w35dYTsvhLPVnYs9eStHfGJvOvKxVfELGroGkvsg+p" crossorigin="anonymous" />
</head>
<body>
<div class="container">
<main class="loginMain">
<!--회원가입섹션-->
<section class="login">
<article class="login__form__container">
<!--회원가입 폼-->
<div class="login__form">
<!--로고-->
<h1><img th:src="@{/images/logo.jpg}" alt=""></h1>
<!--로고end-->
<!--회원가입 인풋-->
<form class="login__input" th:action="@{/auth/signup}" method="post">
<input type="text" name="username" placeholder="유저네임" required="required"/>
<input type="password" name="password" placeholder="패스워드" required="required"/>
<input type="email" name="email" placeholder="이메일" required="required"/>
<input type="text" name="name" placeholder="이름" required="required"/>
<button>가입</button>
</form>
<!--회원가입 인풋end-->
</div>
<!--회원가입 폼end-->
<!--계정이 있으신가요?-->
<div class="login__register">
<span>계정이 있으신가요?</span>
<a th:href="@{/auth/signin}">로그인</a>
</div>
<!--계정이 있으신가요?end-->
</article>
</section>
</main>
</div>
</body>
- 회원가입 인풋에 있는 name에 맞게, dto를 생성함
💾 web > dto > auth > SignupReqDto.java
package org.example.photogram_re.web;
import lombok.extern.slf4j.Slf4j;
import org.example.photogram_re.web.dto.auth.SignupReqDto;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@Slf4j
@Controller // 1. IoC 2. 파일을 리턴하는 controller
public class AuthController {
@GetMapping("/auth/signin")
public String signinForm() {
return "auth/signin";
}
@GetMapping("/auth/signup")
public String signupForm() {
return "auth/signup";
}
// 회원가입버튼 -> /auth/signup -> /auth/signin
@PostMapping("/auth/signup")
public String signup(SignupReqDto signupReqDto) { // key=value (x-www-form-urlencoded)
log.info("signup request: {}", signupReqDto.toString());
return "auth/signin";
}
}
- `signup` 메서드의 파라미터에 `SignupReqDto signupReqDto) 추가
- `@Slf4j` 애노테이션 추가
- `log.info("signup request: {}", signupReqDto.toString());` 로, Log 찍어봄
- 회원가입 화면에서 입력한 내용 Log로 확인할 수 있음
02. Entity
💾 domain > user > User.java
package org.example.photogram_re.domain.user;
// JPA-Java persistence API (자바로 데이터를 영구적으로 저장(DB)할 수 있는 API를 제공
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 번호 증가 전략이 DB를 따라감
private Long id;
private String username;
private String password;
private String name;
private String website;
private String bio; // 자기 소개
private String email;
private String phone;
private String gender;
private String profileImageUrl; // 사진
private String role; // 권한
private LocalDateTime createdDate;
public void createDate() {
this.createdDate = LocalDateTime.now();
}
}
- `@AllArgsConstructor`
- 클래스의 모든 필드를 매개변수로 가지는 생성자를 자동으로 생성해 주는 역할을 함
- 해당 클래스의 모든 필드를 초기화할 수 있는 생성자가 자동으로 만들어짐
- `@NoArgsConstructor`
- 매개변수가 없는 기본 생성자를 자동으로 생성해줌
- 클래스에 명시적으로 생성자를 정의하지 않아도 자동으로 기본 생성자를 만들어 줌
- `@Entity`
- 클래스가 데이터베이스 테이블과 매핑되는 엔티티 클래스임
- 데이터베이스 테이블에 해당하는 객체로, 이 객체를 통해 데이터베이스에 접근하고 조작할 수 있음
- `@GeneratedValue(Strategy = GenerationType.IDENTITY)
- 데이터베이스에서 기본 키의 값을 자동으로 생성하고 관리하도록 설정할 때 사용함
- `@Id` 애노테이션과 함께 사용되며, 특정 엔티티의 기본 키가 데이터베이스에 의해 자동으로 생성되도록 설정함
DB에 가서 확인을 해보면, 테이블이 잘 생성된 것을 볼 수 있다.
이지업클래스 [메타코딩] 스프링부트 SNS프로젝트 - 포토그램 만들기 강의 실습
참고
OpenAi. (2024) ChatGPT (version 3.5)[Large Language model]. https://chat.openai.com
300x250
'Framekwork > photogram' 카테고리의 다른 글
[스프링 부트 포토그램] 20강 인증 회원가입 - 비밀번호 해시 (BCryptPasswordEncoder) (0) | 2024.09.03 |
---|---|
[스프링 부트 포토그램] 19강 인증 회원가입 - 완료 (0) | 2024.09.03 |
[스프링 부트 포토그램] 17강 인증 회원가입 - CSFR 토큰 해제 (0) | 2024.08.26 |
[스프링 부트 포토그램] 16강 인증 회원가입 - SecurityConfig 생성 (0) | 2024.08.22 |
[스프링 부트 포토그램] 11강 ~ 15강 Controller (데이터 전송, 응답, redirection) (0) | 2024.08.21 |