[Spring][Java] 간단한 메모장 구현하기 5 (MemoController 생성)

PersesTitan·2022년 6월 20일
0

Spring

목록 보기
24/48

다음으로 컨트롤러를 구현하였습니다.

/memos : 메모 리스트 보여주는 곳
/memo : 새로운 메모 생성하는 곳
/memo/{id} : 특정 메모 상세 보기
/memo/{id}/edit : 메모 편집 하는 곳
/memo/{id}/remove : 메모 삭제하는 곳

그루비 부분은 끝났습니다. html, yml등은 '간단한 메모장 구현하기'에서 코드가 중복 되어서 생략하였습니다.

@Controller
@RequiredArgsConstructor
public class MemoController {

    private final MemoService memoService;

    @GetMapping("/memos")
    public String memoList(Model model, HttpServletRequest httpServletRequest) {
        String search = httpServletRequest.getParameter("search");
        List<Memo> memos = memoService.findSearch(search);
        model.addAttribute("searchParam", !(search == null || search.isBlank()));
        model.addAttribute("search", search);
        model.addAttribute("memos", memos);
        return "memo_list";
    }

    //메모 생성 요청
    @GetMapping("/memo")
    public String createForm() {
        return "new_memo";
    }

    //메모 생성
    @PostMapping("/memo")
    public String createMemo(Memo memo, RedirectAttributes redirectAttributes) {
        Long id = memoService.save(memo);
        redirectAttributes.addAttribute("id", id);
        redirectAttributes.addAttribute("create", true);    //생성했을때 메세지
        return "redirect:/memo/{id}";
    }

    //상세 로직
    @GetMapping("/memo/{id}")
    public String memo(@PathVariable Long id, Model model) {
        Memo memo = memoService.findOne(id);
        model.addAttribute("id", id);
        model.addAttribute("memo", memo);
        return "item/memo";
    }

    //수정 화면
    @GetMapping("/memo/{id}/edit")
    public String editFrom(@PathVariable Long id, Model model) {
        Memo memo = memoService.findOne(id);
        model.addAttribute("id", id);
        model.addAttribute("memo", memo);
        return "edit_memo";
    }

    //수정 로직
    @PostMapping("/memo/{id}/edit")
    public String edit(@PathVariable Long id, MemoDTO memoDTO) {
        memoService.update(id, memoDTO.title(), memoDTO.content());
        return "redirect:/memo/{id}";
    }

    //삭제 로직
    @PostMapping("/memo/{id}/remove")
    public String remove(@PathVariable Long id) {
        memoService.remove(id);
        return "redirect:/memos";
    }
}

Java 버전 코드
Groovy 버전 코드
Kotlin 버전 코드

profile
안녕하세요 페르세스 티탄입니다! 부족한 부분이 많이 있겠지만 잘부탁드립니다.

0개의 댓글