마트철수
[067] Spring 화면 처리 - BoardController 본문
2024.08.13(화)
Spring 7일차
Spring
PART01
- CH02. 스프링의 특징과 의존성 주입
- CH03.1 스프링 MVC의 기본 구조
- CH03.2 스프링 MVC의 Controller 1
- CH03.3 스프링 MVC의 Controller 2
- CH03.4 SpringLegacy 업데이트
- CH04.1 스프링과 MySQL Database
- CH04.2 MyBatis와 스프링 연동
- CH05.1 영속, 비즈니스 계층의 CRUD 구현
- CH05.2 비즈니스 계층
- CH05.3 프레젠테이션(웹) 계층의 CRUD 구현
- CH06.1 화면 처리
- CH06.2 File, Upload, Download
CH06.1 화면 처리
화면 처리
수정하기
- /board/update?no=xxx
@GetMapping({ "/get", "/update" })
public void get(@RequestParam("no") Long no,
Model model) {
model.addAttribute("board", service.get(n0));
}
- 프라미머리 키 등을 알려줄 필요가 없음
- input type ="hidden" name="no" value="${board.no}">
삭제하기
- /board/update?no=xxx
File upload
- 첨부파일을 위한 tbl_board_attachment 테이블 생성
- board의 bno에 대한 FK 설정

UploadFiles.java
- mkdir: 한 가지 폴더 / mkdirs: 폴더의 폴더 생성
# 맵핑은 모두 컨트롤러 쪽에서 하고 있음
BoardController 부분 이해하기
package org.scoula.board.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j;
import org.scoula.board.dto.BoardDTO;
import org.scoula.board.service.BoardService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@Controller
@Log4j
@RequestMapping("/board") // url 공통주소 할당
@RequiredArgsConstructor // 생성자 주입
public class BoardController {
final private BoardService service;
// return 값이 void기 때문에 뷰도 경로가 동일(board/list)
@GetMapping("/list")
public void list(Model model) {
log.info("list");
// Model의 속성에 데이터를 담을 경우 뷰로 전달 가능
model.addAttribute("list", service.getList());
}
@GetMapping("/create")
public void create() {
log.info("create");
}
@PostMapping("/create")
public String create(BoardDTO board,
RedirectAttributes ra) {
service.create(board);
ra.addFlashAttribute("result", board.getNo());
return "redirect:/board/list";
}
@GetMapping({"/get", "/update"}) // "/get"과 "/update" 경로를 둘 다 처리
// @RequestParam: 주소 뒤에 ?를 붙여서 쿼리스트링으로 정보를 받아준다
public void get(@RequestParam("no") Long no, Model model) {
log.info("/get or update");
model.addAttribute("board", service.get(no));
}
@PostMapping("/update")
public String update(BoardDTO board,
RedirectAttributes ra) {
if (service.update(board)) {
ra.addFlashAttribute("result", "success");
}
return "redirect:/board/list";
}
@PostMapping("/delete")
public String delete(@RequestParam("no") Long no, RedirectAttributes ra) {
if (service.delete(no)) {
ra.addFlashAttribute("result", "success");
}
return "redirect:/board/list";
}
}
'KB IT's Your Life > 교육' 카테고리의 다른 글
| [069] Rest API (0) | 2024.08.19 |
|---|---|
| [068] REST API (2) | 2024.08.14 |
| [066] Spring: 서버로 화면 처리 (0) | 2024.08.12 |
| [TIL_3] KB 부트캠프: 스프링 MVC의 Controller (0) | 2024.08.11 |
| [065] MyBatis 비즈니스 계층의 CRUD 구현 (0) | 2024.08.08 |