코딩공부/Java Spring

[spring 실습] 게시판 만들기 - 글 수정 기능 만들기

integerJI 2020. 12. 30. 21:47

[spring 실습] 게시판 만들기 - 글 수정 기능 만들기


[spring 실습] 게시판 만들기 - 글 쓰기 기능 만들기 : integer-ji.tistory.com/341

 

[spring실습] 게시판 만들기 - 글 쓰기 기능 만들기

[spring실습]게시판 만들기 - 글 쓰기 기능 만들기 기본 설정 1. pom.xml 설정, java 1.8 버전 맞추기 : integer-ji.tistory.com/183 2. tomcat 8.5 연동, sts 한글 설정 : integer-ji.tistory.com/184 3...

integer-ji.tistory.com

이어서 진행됩니다.


Update 쿼리문 추가하기

	<update id="updateProject">
		UPDATE
			TB_PROJECT
		SET
			PRO_TITLE = #{proTitle}, 
			PRO_BODY = #{proBody}
		WHERE
			PRO_ID = #{proId} 
	</update>

 

Oracle의 Update문입니다.

 

TB_PROJECT 테이블의 PRO_TITLE와 PRO_BODY의 값을 받아 수정합니다.

 

기준은 PRO_ID.

 

 

DAO 설정

void updateProject(ProjectVO projectVO);

 

DAO에 xml에서 만든 updateProject를 불러옵니다.

 

 

Service Update문 추가

void updateProject(ProjectVO projectVO);

 

Service에 DAO 연결

 

	@Override
	public void updateProject(ProjectVO projectVO) {
		projectMapper.updateProject(projectVO);
	}

 

다시 ServiceImpl에 가져옵니다.

 

 

Controller 추가

	/**
	 * 게시판 수정폼
	 * @param projectVO
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value = "/projectUpdateForm.do")
	public String projectUpdateForm(@ModelAttribute("projectVO") ProjectVO projectVO, Model model) throws Exception {

	    return "projectUpdateForm";
	}
	
	/**
	 * 글을 수정합니다.
	 * @return
	 */
	@RequestMapping(value = "/projectUpdate.do")
	public String projectUpdate(@ModelAttribute("projectVO") ProjectVO projectVO, Model model) {

		projectService.updateProject(projectVO);
		
		return "redirect:/projectList.do";
	}

 

게시판을 수정하기 위해 수정 페이지로 연결되는 UpdateForm을 만들어 줍니다.

 

UpdateForm에서 전송되는 값을 이용해 Update Api를 생성

 

 

projectList.jsp 수정 페이지 추가

<a href="${path}/projectUpdateForm.do?proId=${item.proId}">수정</a>

 

수정 버튼을 누를 때 projectUpdateForm에 파라미터로 item의 proId를 같이 넘겨줍니다.

 

이 Id를 통해 Update 할 게시글의 Data를 가져옵니다.

 

 

글 수정 From.jsp 추가

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!-- @@@ 매우 중요 @@@ -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!-- src/main/webapp/WEB-INF/view/projectRegisterForm.jsp -->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr"/>
<title>Home</title>
</head>
<body>
	<h1>Project Register</h1>
	<c:url var="updateUrl" value="${path}/projectUpdate.do" />
	<form:form commandName="projectVO" action="${updateUrl}" name="projectVO" method="post">
	<form:input type="hidden" path="proId" id="proId" size="20" maxlength="20" value="${item.proId}"/>
	<table>
	<tbody>
	<tr>
	   <th>제목</th>
	   <td><form:input path="proTitle" id="proTitle" size="20" maxlength="20" /></td>
	</tr>
	<tr>
	   <th>내용</th>
	   <td><form:textarea path="proBody" id="proBody" /></td>
	</tr>
	<tr>
		<td colspan="2"><input type="submit" value="등록" /></td>
	</tr>
	</tbody>
	</table>
	</form:form>
</body>
</html>

 

projectUpdateForm.jsp를 추가하여 글 수정 페이지를 만들어 줍니다.

 

15 Line의 type='"hidden"으로 게시글의 proId를 넘겨줍니다.

 

해당 proId는 Update를 실행하며 Where절에 들어가게 됩니다.

 

 

Test

예시를 표현하기 위하여 hidden을 지워 주었습니다.

 

게시글 번호 9번의 글을 수정합니다.

 

 

 

참고 GitHub : github.com/integerJI/spring.git