VanillaSky7 2023. 5. 10. 18:38

각 기능별 URI


각 CRUD 기능에 대한 URI를 표로 정리해보면 다음과 같다.

 

작업 URI HTTP 메서드 설명
읽기 /board/read/?bno=게시글번호 GET 지정된 번호의 게시물 보여줌
삭제 /board/remove POST 게시물 삭제
쓰기 /board/write GET 게시물 작성을 위한 화면을 보여줌
/board/write POST 작성한 게시물 저장
수정 /board/modify?bno=게시글번호 GET 게시물을 수정하기 위해 읽어옴
/board/modify POST 수정된 게시물 저장

 

※ URL vs URI ?

 URL은 리소스의 경로, 정확히는 전체(full) 경로를 의미하고, URN은 리소스의 유일한 이름을 의미한다. 이때 URL과 URN 두 개를 통칭하는 것이 바로 URI이다. URI는 경로의 일부를 포함한다.

 

 

게시물 읽기 과정


1. 게시판 목록 페이지(boardList.jsp)에서 게시물 제목을 클릭하여 읽기 요청

2. 읽기 요청이 GET 방식(/board/read?bno=게시물번호)으로 BoardController로 보내짐

3. 이를 BoardController가 받아 boardService.read(bno)를 호출

4. DB에서 boardDto에 담아 그 내용을 board.jsp 에 보내주어 해당 게시물에 대한 정보(제목, 내용)을 보여줌

 

 

 

게시물 쓰기 과정


ㆍGetMapping

  1. 게시판 목록 페이지(boardList.jsp)에서 '글쓰기' 버튼을 클릭하여 GET 방식(/board/wirte)으로 요청

  2. BoardController에서 GetMapping 된 write()를 호출하여 게시물 페이지(board.jsp)를 보여줌

  3. 게시물 페이지에서 페이지를 분리하지 않고 게시글 읽기와 글쓰기를 아래 예제와 코드와 같이 mode == readonly 해제        유무에 따라 구분

 

<input name="title" type="text" value="<c:out value='${boardDto.title}'/>" placeholder= " 제목을 입력해 주세요." ${mode=="new" ? "" : "readonly='readonly'"}><br>
<textarea name="content" rows="20" placeholder=" 내용을 입력해 주세요." ${mode=="new" ? "" : "readonly='readonly'"}><c:out value="${boardDto.content}"/></textarea><br>

 

ㆍPostMapping

1. <form> 태그에 담긴 게시물 제목과 게시물 내용을 POST 방식으로 전송

2. BoardController에서 write()를 통해 boardService.write(boardDto) 호출하여 DB에 저장

3. 리다이렉트(redirect:/board/list)를 통해 list()를 호출하고 boardService.getPage(map) 를 호출하여 게시물 목록을 가져와 게시판 목록 페이지를 보여줌

 

 

 

게시물 수정 과정


1. 게시물 페이지에서 '수정' 버튼을 클릭하면 readonly 해제 및 title을 '게시글 읽기'에서 '게시글 수정'으로 변경

2. POST 방식(/board/modify)으로 BoardController로 전송하여 boardService.modify(boardDto)를 호출하여 DB에 저장

3. 리다이렉트(redirect:/board/list)를 통해 list()를 호출하고 boardService.getPage(map) 를 호출하여 게시물 목록을 가져와 게시판 목록 페이지를 보여줌

 

 

 

게시물 삭제 과정


1. 게시물 페이지에서 '삭제' 버튼을 클릭하면 POST 방식(/board/remove)으로 게시물번호(bno)와 함께 BoardController로 전송

2. BoardController는 boardService.remove(bno, writer) 를 호출(작성자 즉 writer 정보도 같이 보내야 아무나 지울 수 없다.)

3. 리다이렉트(redirect:/board/list)를 통해 list()를 호출하고 boardService.getPage(map) 를 호출하여 게시물 목록을 가져와 게시판 목록 페이지를 보여줌

 

3번의 과정에서 머물고 있었던 페이지로 다시 이동시키기 위해서는 redirect:/board/list?page= &pageSize= 와 같이 쿼리스트링을 통해 page와 pageSize 값을 넘겨주어야 한다는 것에 주의한다.