HTTP 상태 코드란? 특정 HTTP 요청이 성공적으로 완료되었는지 알려주는 것!
(1 ~ 500 까지 존재 한다!)
(서버 입장에서 얘기하는 것이다.)
간단히 큰 값마다의 예시
100 → 기다려
200 → 굳
300 → 딴 거 줄게
400 → 너(클라이언트) 잘못했어
500 → 내가(서버) 잘못했어
DTO(Data Transfer Object, 데이터 전송 객체)

- 프로세스 간의 데이터를 전달하는 객체를 의미한다.
- 클라이언트와 서버 간의 데이터를 전달하기 위한 컨테이너이다. → 클라이언트가 서버에 요청 / 서버가 클라이언트에 응답 사용하는 이유는 코드 재사용성을 통해 분리된 레이어간의 데이터 전송 쉽게 가능하며 캡슐화를 통해 보안을 지킬 수 있습니다.
코드 재사용성
: 같은 형태의 데이터를 여러 곳에서 전송해야 할 경우, DTO를 재사용함으로써 코드의 중복을 줄일 수 있습니다. 이는 유지보수를 쉽게 만들어줍니다.
레이어 간 데이터 전송
:
시스템이 여러 레이어로 구성되어 있을 때, DTO는 이 레이어들 사이에서 데이터를 안전하고 일관되게 전달하는 역할을 합니다. 이로써 각 레이어는 자신의 역할에만 집중할 수 있게 되며, 시스템의 구조가 깔끔해집니다.
캡슐화와 보안
: DTO는 필요한 데이터만을 담고 있으며, 이 데이터에 대한 접근을 제어할 수 있습니다. 이를 통해 데이터의 무결성을 보장하고, 불필요한 데이터의 노출을 방지하여 보안을 강화할 수 있습니다.dto 만들기 및 사용
dto
package shop.mtcoding.blog.user;
import lombok.Data;
public class UserRequest {
/**
* 요청 DTO = Data Transfer Object
*/
@Data //getter, setter,tostring 다들고 있는 어노테이션
public static class JoinDto { //user가 서버한테 요청하는 가입 데이터
private String username;
private String password;
private String email;
}
@Data //getter, setter,tostirng 다들고 있는 어노테이션
public static class LoginDto { //user가 서버한테 요청 하는 로그인 데이터
private String username;
private String password;
}
}
dto 사용
package shop.mtcoding.blog.user;
import jdk.swing.interop.SwingInterOpUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class UserController {
@PostMapping("/join")
public String join(UserRequest.JoinDto requestDTO){
System.out.println(requestDTO);
return "redirect:/loginForm";
}
@GetMapping("/joinForm")
public String joinForm() {
return "user/joinForm";
}
@GetMapping("/loginForm")
public String loginForm() {
return "user/loginForm";
}
@GetMapping("/user/updateForm")
public String updateForm() {
return "user/updateForm";
}
@GetMapping("/logout")
public String logout() {
return "redirect:/";
}
}
Controller의 역할
- 요청을 받고 응답하는 역할을 한다.
- 유효성 검사를 한다.
컨트롤러를 프레젠테이션 레이어라고 하는데
주로 사용자의 요청을 URL OR URI로 받고 데이터를 DTO로 받고,
servic rayer에 위임한다.
Controller의 역할의 응답과 요청 데이터, 처리 결과를 어떻게 하는지?!
1. 요청 → URL (Locator), URI (Identifier)
2. 응답 → HTML, JSON
3. 데이터 → DTO
4. 처리 결과 → View를 통해 반환
H2 (database)
- 자바에서 사용하는 관계형 데이터 베이스 관리 시스템(RDBMS)이다.
인 메모리 DB
이며 스프링 실행 중 에만 가능하다.- Ram에 저장되어 휘발성이며 종료 시 사라진다.
- 설치할 필요가 없는 DBMS다.
H2 DB를 개발단계(dev)에선 사용한다.
장점
- 자바 애플리케이션 임베드가 가능하다. (임베드= 장착)
- 방언(db dialect) 설정이 가능 함
- H2를 실행 할때 방언(언어) 설정 가능하다
방언 설정

H2(JDBC URL 문법)

USER 데이터 베이스 만드는 코드
package shop.mtcoding.blog.user;
import jakarta.persistence.*;
import lombok.Data;
import java.time.LocalDateTime;
// user로 테이블명을 만들면, 키워드여서 안만들어질 수 있다. _tb 컨벤션 지키자.
@Table(name="user_tb")
@Data
@Entity
public class User {
@Id // PK 설정
@GeneratedValue(strategy = GenerationType.IDENTITY) // auto_increment 전략
private int id;
private String username;
private String password;
private String email;
// 카멜 표기법으로 만들면 DB는 created_at 으로 만들어진다. (언더스코어 기법)
private LocalDateTime createdAt;
}

H2 연결하는법
→ 방언 설정 :
MODE=MySQL
→ http://localhost:8080/h2-console 접속 시 접근 가능
매번 가입 할때 마다 귀찮으니 input태그에 value에 미리 값 적어놓기
server:
servlet:
encoding:
charset: utf-8
force: true
port: 8080
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:test;MODE=MySQL # MODE=MySQL 은 방언(DB Dialect) 설정
username: sa
password:
h2:
console:
enabled: true
jpa:
hibernate:
ddl-auto: create # ddl - CREATE DROP ALTER TRUNCATE COMMENT
show-sql: true
properties:
hibernate:
format_sql: true # sql 을 깔끔하게 보이게 하
db구조 보는법
ddl-auto=create, drop, alter(테이블 변경할 때 사용) 기
실행시 자동 테이블 생성

create로 설정해야지 서버 실행할때마다 데이터 들어감
jpa 설정


Share article