마트철수

[067] Spring 화면 처리 - BoardController 본문

KB IT's Your Life/교육

[067] Spring 화면 처리 - BoardController

마트스 2024. 8. 13. 17:26

 

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