1. 게시물 생성은 다 알겠는데; 뭔가 글을 수정도 좀 하고 싶어졌다.
modify.jsp 파일을 만들어서 작성 구현 코드와 비슷하게 만들어준다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>수정</title>
</head>
<body>
<form method="post">
<label>제목</label>
<input type="text" name="title" /><br />
<label>작성자</label>
<input type="text" name="nick" /><br />
<label>내용</label>
<textarea cols="50" rows="5" name="text"></textarea><br />
<button type="submit">수정</button>
</form>
</body>
</html>
2. 그리고 일단 컨트롤러에 url 매핑부터 get방식으로 추가해 준다.
//게시물 수정
@RequestMapping(value = "/modify", method = RequestMethod.GET)
public void getModify() throws Exception {
}
3. 수정을 한다는 의미는? 조회의 상세 링크 페이지에서 무언가 클릭 했을 때, 가능해야 하겠지?
view.jsp 파일에 아래 링크를 추가한다.(역시나 idx값으로 서로 매칭시킨다)
<div>
<a href="/board/modify?idx=${view.idx}">수정</a>
</div>
* 여기서 드디어 데이터베이스를 활용할 것 같다?는 느낌이 든다. 그럼? 매퍼!
4. boardMapper 파일에 수정 관련 로직 코드를 작성한다.
<!-- 수정 -->
<update id="modify" parameterType="com.project.model.BoardVO" >
update board
set
title = #{title},
text= #{text},
nick= #{nick}
where idx= #{idx}
</update>
5. 다음은? DAO와 Service 관련 로직을 추가하면 된다.
BoardDAO 파일과 BoardService 파일에
// 게시물 수정
public void modify(BoardVO vo) throws Exception;
BoardDAOImpl 파일에
// 게시물 수정
@Override
public void modify(BoardVO vo) throws Exception {
sql.update(namespace + ".modify", vo);
}
BoardServiceImpl 파일에
//게시물 수정
@Override
public void modify(BoardVO vo) throws Exception {
dao.modify(vo);
}
* 반환타입 없이 update문을 실행하는 아이이므로.
6. 그럼 다시 컨트롤러에서 M과 V를 상호작용 하는 로직으로 컨트롤 해줘야 할 것 같다.(BoardController)
'수정'은 데이터를 수정해 POST 요청으로 update시키는 데 목적이 있으므로, post 컨트롤러도 필요하다.
위에서 get메서드의 로직은 브라우저 요청을 받는 함수이고, 그 아래에 POST 메서드로 추가한다.
// 수정(Post)
@RequestMapping(value = "/modify", method = RequestMethod.POST)
public String postModify(BoardVO vo) throws Exception {
service.modify(vo);
return "redirect:/board/view?idx=" + vo.getIdx();
}
* vo 객체 .의 Idx게터로 idx값 추출.(BoardVO에서 정의되어 있다.)
7. 글을 게시하고 나니 언젠가는 지우고 싶을 때가 있다. 그럼 삭제를 구현하면 된다.
이제는 조금씩 과정이 떠오른다. 조회 상세 페이지(view.jsp 에서 구현하면 될 듯하다.)
수정 밑에 링크를 추가한다.
<a href="/board/delete?idx=${view.idx}">삭제</a>
8. 삭제는 클릭으로 데이터베이스 삭제까지 이어지는 로직이 어렴풋이 보인다.
그럼? 매퍼!
boardMapper 파일에 쿼리문부터 만든다.
<!-- 삭제 -->
<delete id="delete" parameterType="int">
delete
from board
where idx= #{idx}
</delete>
* 객체 생성따위 필요 없이 인덱스 값으로 바로 삭제한다.
9. 그럼 DAO와 Service에서 로직을 구현해서 사용하면 된다.
BoardDAO와 BoardService 파일에 아래 코드 추가
// 삭제
public void delete(int idx) throws Exception;
BoardDAOImpl 파일에 아래 코드 추가
// 삭제
public void delete(int idx) throws Exception {
sql.delete(namespace + ".delete", idx);
}
BoardServiceImpl 파일에 아래 코드 추가
// 게시물 삭제
public void delete(int idx) throws Exception {
dao.delete(idx);
}
10. 컨트롤러로 연결시키면 끝난다. BoardController 파일에 아래 코드 추가
// 삭제
@RequestMapping(value = "/delete", method = RequestMethod.GET)
public String getDelete(@RequestParam("idx") int idx) throws Exception {
service.delete(idx);
return "redirect:/board/list";
}
확인. 나이스.
'Programming > 스프링(spring) - Enterprise' 카테고리의 다른 글
스프링(spring)/ 게시판 구축 5(좋아요 기능) (0) | 2023.07.21 |
---|---|
스프링(spring)/ 게시판 구축 4(검색 기능) (0) | 2023.07.20 |
스프링(spring)/ 게시판 구축 2(게시물 작성 및 상세 페이지) (0) | 2023.07.20 |
스프링(spring)/ 게시판 구축 1(메인 페이지) (0) | 2023.07.19 |
6. 스프링(spring)/ 구조 (0) | 2023.07.18 |