πŸ›’ μƒν’ˆ μΆ”κ°€κΈ°λŠ₯ 1 (Map μžλ£Œν˜•)

EthAnalogΒ·2025λ…„ 8μ›” 20일

Spring Boot

λͺ©λ‘ 보기
11/16
post-thumbnail

βœ… μ–΄λ–€ κΈ°λŠ₯을 λ§Œλ“œλŠ” 것인가?

  • μ‚¬μš©μžκ°€ μƒν’ˆ 이름과 가격을 μž…λ ₯ν•΄ μ„œλ²„λ‘œ 전솑
  • μ„œλ²„λŠ” 데이터λ₯Ό 검사 ν›„ DB에 μ•ˆμ „ν•˜κ²Œ μ €μž₯
  • 이후 μƒν’ˆ λͺ©λ‘ νŽ˜μ΄μ§€λ‘œ λ¦¬λ‹€μ΄λ ‰νŠΈ

πŸ‘‰ μ™œ 이걸 λ°°μ›Œμ•Ό ν•˜μ§€?

λͺ¨λ“  μ›Ήμ„œλΉ„μŠ€λŠ” κ²°κ΅­ 데이터 μΆ”κ°€/μ €μž₯ κΈ°λŠ₯이 ν•΅μ‹¬μž…λ‹ˆλ‹€.
μƒν’ˆ μΆ”κ°€λŠ” κ³§ κ²Œμ‹œνŒ κΈ€ 좔가와 λΉ„μŠ·ν•˜λ©°, 이 과정을 μ•Œλ©΄ CRUD(Create, Read, Update, Delete)의 C(Create)λ₯Ό 직접 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


πŸ“š κ°œλ… 정리

ν‚€μ›Œλ“œμ„€λͺ…
@GetMappingνŠΉμ • URL 접속 μ‹œ HTML νŽ˜μ΄μ§€ λ°˜ν™˜
@PostMappingHTML Formμ΄λ‚˜ Ajaxμ—μ„œ μ „μ†‘λœ 데이터 처리
@RequestParamμœ μ €κ°€ 보낸 데이터λ₯Ό νŒŒλΌλ―Έν„°λ‘œ λ°›μ•„μ˜΄
redirect:μš”μ²­ 처리 ν›„ νŠΉμ • νŽ˜μ΄μ§€λ‘œ μ΄λ™μ‹œν‚΄
Mapkey-value ꡬ쑰둜 데이터 μ €μž₯ν•˜λŠ” μžλ£Œν˜•
HashMapMap의 λŒ€ν‘œμ μΈ κ΅¬ν˜„μ²΄

βš™οΈ κ΅¬ν˜„ 흐름 및 μ½”λ“œ

1. κΈ€ μž‘μ„± νŽ˜μ΄μ§€ λ§Œλ“€κΈ° (write.html)

<form action="/add" method="POST">
  <input name="title">
  <input name="price">
  <button type="submit">μƒν’ˆ μΆ”κ°€</button>
</form>
  • name 속성이 μ€‘μš” β†’ μ„œλ²„μ—μ„œ 이 μ΄λ¦„μœΌλ‘œ 데이터 λ°›μŒ
  • action="/add" : 데이터λ₯Ό 보낼 μ„œλ²„ URL μ§€μ •
  • method="POST" : POST λ°©μ‹μœΌλ‘œ 데이터 전솑

2. κΈ€ μž‘μ„± νŽ˜μ΄μ§€ λ³΄μ—¬μ£ΌλŠ” API

@GetMapping("/write")
String write() {
  return "write.html";
}
  • μ‚¬μš©μžκ°€ /write μ ‘μ†ν•˜λ©΄ write.html을 λ³΄μ—¬μ€Œ

3. μ„œλ²„μ—μ„œ 데이터 λ°›κΈ°

@PostMapping("/add")
String writePost(@RequestParam String title,
                 @RequestParam Integer price) {
    System.out.println("μƒν’ˆλͺ…: " + title);
    System.out.println("가격: " + price);
    return "redirect:/list";
}
  • @RequestParam : μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 데이터λ₯Ό κ·ΈλŒ€λ‘œ λ³€μˆ˜μ— λ‹΄μ•„μ€Œ
  • DB에 μ €μž₯ν•˜λŠ” λ‘œμ§μ„ μΆ”κ°€ν•˜λ©΄ μ™„μ„±
  • redirect:/list β†’ μ €μž₯ ν›„ μƒν’ˆ λͺ©λ‘ νŽ˜μ΄μ§€λ‘œ 이동

4. Map으둜 데이터 ν•œ λ²ˆμ— λ°›κΈ°

@PostMapping("/add")
String writePost(@RequestParam Map<String, Object> formData) {
    System.out.println(formData);
    return "redirect:/list";
}
  • Map을 ν™œμš©ν•˜λ©΄ μž…λ ₯값이 λ§Žμ„ λ•Œ 일일이 λ³€μˆ˜ μ„ μ–Έν•˜μ§€ μ•Šμ•„λ„ 됨
  • formData.get("title") 처럼 κΊΌλ‚΄ μ‚¬μš© κ°€λŠ₯

πŸ’‘ 이런 곳에 ν™œμš©ν•  수 μžˆμ–΄μš”

  • μ‡Όν•‘λͺ° μƒν’ˆ μΆ”κ°€
  • κ²Œμ‹œνŒ κΈ€ μž‘μ„±
  • νšŒμ›κ°€μž… κΈ°λŠ₯ κ΅¬ν˜„
  • λŒ“κΈ€ μž‘μ„±

✍️ 개인 정리 및 회고

  • κ²°κ΅­ μ›Ήμ˜ 본질 = 데이터 μ£Όκ³ λ°›κΈ°
  • POST μš”μ²­κ³Ό @RequestParam만 이해해도 CRUD μ ˆλ°˜μ€ 클리어
  • 이제 DB μ—°κ²°λ§Œ 뢙이면 λ°”λ‘œ μ‹€μ „ μ½”λ“œ κ°€λŠ₯

πŸ”‘ 였늘 배운 핡심 3쀄 μš”μ•½

  1. Form β†’ action + method둜 μ„œλ²„μ— 데이터 전솑
  2. μ„œλ²„λŠ” @PostMapping, @RequestParam으둜 데이터 λ°›μŒ
  3. 받은 λ°μ΄ν„°λŠ” DB μ €μž₯ ν›„ redirect:/λͺ©λ‘ 으둜 이동

0개의 λŒ“κΈ€