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

PersesTitan·2022년 6월 20일
0

Spring

목록 보기
14/48

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

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

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

@Controller
class MemoController {

    @Autowired
    private lateinit var memoService: MemoService

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

    @GetMapping("/memo")
    fun createFrom(): String {
        return "new_memo"
    }

    @PostMapping("/memo")
    fun createMemo(memo: Memo, redirectAttributes: RedirectAttributes): String {
        val id: Long? = memoService.save(memo)
        redirectAttributes.addAttribute("id", id)
        redirectAttributes.addAttribute("create", true)
        return "redirect:/memo/{id}"
    }

    @GetMapping("/memo/{id}")
    fun memo(@PathVariable id: Long, model: Model): String {
        val memo: Memo = memoService.findOne(id)
        model.addAttribute("id", id)
        model.addAttribute("memo", memo)
        return "item/memo"
    }

    //메모 편집 페이지
    @GetMapping("/memo/{id}/edit")
    fun editFrom(@PathVariable id: Long, model: Model): String {
        val memo: Memo = memoService.findOne(id)
        model.addAttribute("id", id)
        model.addAttribute("memo", memo)
        return "edit_memo"
    }

    @PostMapping("/memo/{id}/edit")
    fun editMemo(@PathVariable id: Long, memoDTO: MemoDTO): String {
        memoService.update(id, memoDTO.title, memoDTO.content)
        return "redirect:/memo/{id}"
    }

    @PostMapping("/memo/{id}/remove")
    fun remove(@PathVariable id: Long): String {
        memoService.remove(id)
        return "redirect:/memos"
    }
}

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

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

0개의 댓글