수정 기능

 

저번장에서 read.jsp에 삭제버튼과 수정버튼을 만들었습니다.

이제 수정 기능부터 구현하도록 하겠습니다.

 

BoardController에 update 메소드를 작성하겠습니다.

 

@RequestMapping(value = "/update", method = RequestMethod.GET)
public void updateGET(@RequestParam("board_number") Integer board_number, Model model) throws Exception {
	logger.info("updateGET!!!");
	BoardVO board = service.read(board_number);
	model.addAttribute("BoardVO", board);
}
	
@RequestMapping(value = "/update", method = RequestMethod.POST)
public String updatePOST(BoardVO board, RedirectAttributes ra) throws Exception {
	logger.info("updateGET!!!");
	service.update(board);
	ra.addFlashAttribute("result", "updateOK");
	return "redirect:/board/read?board_number="+board.getBoard_number();
}

 

 

read.jsp에서 수정버튼을 누르면 updateGET 메서드가 호출되어서 수정할 게시물의 데이터를 조회하여 수정 창을 보여줍니다.

그 다음 사용자가 수정 하려는 데이터를 입력하고 저장버튼을 누르면 updatePOST메서드가 실행되어서, 서비스 객체를 이용해서 DB 값을 수정 하고 난뒤 해당 게시물의 read.jsp를 redirect하는 방식입니다.

이제 update.jsp를 작성하겠습니다. 

board/view 폴더에 update.jsp를 생성하구요

read.jsp의 코드를 가져와서 몇 가지만 수정할건데요

read.jsp에서 제목, 내용, 작성자가 readonly로 되어있는데 작성자는 그대로 readonly로 두고,

제목과 내용은 readonly를 지워줍니다.

그리고 저희는 update할것이기 때문에 form태그로 해당 코드를 감싸줄겁니다.

다음과 같이 작성합니다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시판</title>
</head>
<body>
	<form method="post">
		<div>글번호 : ${BoardVO.board_number}</div>
		<input type="hidden" name="board_number" value="${BoardVO.board_number}"/>
		<div>
			<div>
				<label for="title">제목</label>
				<input type="text" id="title" name="title" value="${BoardVO.title}"/>		
			</div>
			
			<div>
				<label for="contents">내용</label>
				<textarea name="contents" id="contents" rows="3">${BoardVO.contents}</textarea>		
			</div>
			
			<div>
				<label for="name">작성자</label>
				<input type="text" name="name" id="name" value="${BoardVO.name}" readonly="readonly"/>		
			</div>
		</div>
		
		<div>
			<button type="submit">등록</button>
			<button><a href="/board/read?board_number=${BoardVO.board_number}">취소</a></button>
		</div>
	</form>
</body>
</html>

 

 

아까 updatePOST에서 model 값을 보냈는데 그 값을 받아서 업데이트가 되었다고 경고창을 띄워 보겠습니다.

 

<!-- read.jsp -->

<script>
	var result = '${result}';
  	if(result === 'updateOK') {
		alert("수정되었습니다.");
	}
</script>

 

 

삭제 기능

 

수정 기능을 작성했으니 이제 삭제를 하는 메서드를 만들겠습니다.

BoardController에 delete메서드를 작성합니다.

 

@RequestMapping(value = "/delete", method = RequestMethod.GET)
public void deleteGET(@RequestParam("board_number") Integer board_number, Model model) throws Exception {
	logger.info("deleteGET");
	BoardVO board = service.read(board_number);
	model.addAttribute("BoardVO", board);
}
	
@RequestMapping(value = "delete", method = RequestMethod.POST)
public String deletePOST(@RequestParam("board_number") Integer board_number, RedirectAttributes ra) throws Exception {
	logger.info("deletePOST");
	service.delete(board_number);
    ra.addFlashAttribute("result", "deleteOK");
	return "redirect:/board/listAll";	
}

 

GET에서는 update 메서드와 마찬가지고 board_number를 파라미터로 받아서 글번호를 출력하고,

POST에서도 board_number를 파라미터로 받아서 글을 삭제 하겠습니다.

 

이제 delete.jsp의 뷰를 만들어 볼 것입니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시판</title>

</head>
<body>
	<div>글번호 : ${BoardVO.board_number}</div>
	<br/>
	정말로 삭제하시겠습니까?
	<br />
	
	<div>
		<form action="/board/delete?board_number=${BoardVO.board_number}" method="post">
			<a><button>예 삭제합니다</button></a>
		</form>
		
		<button><a href="/board/read?board_number=${BoardVO.board_number}">취소</a></button>	
	</div>
	
</body>
</html>

 

controller를 수정했으니 서버를 재가동 시키고 삭제를 해보겠습니다.

 

삭제하기 위해 read.jsp 접속하여 삭제 버튼클릭

 

 

삭제 버튼 클릭

 

 

삭제 완료

 

 

28번 게시글을 지우는 것을 확인했으니 마지막으로 잘 삭제가 되었다고 경고창을 띄우러 가겠습니다.

 

BoardController -> deletePOST 메서드의 리턴값이 listAll을 향하고 있으니 

listAll.jsp에 script를 작성해야겠죠?

 

아래와 같이 작성합니다.

 

<!-- listAll.jsp -->

<script>
	var register = "${register}";
	if(register === "registerOK") {
		alert("등록 되었습니다.");
	}
		
	var result = "${result}";
	if(result === "deleteOK") {
		alert("삭제 되었습니다.");
	}
</script>

 

 

경고창이 잘 뜨는지 확인해볼까요?

 

 

 

정상적으로 작동하는것을 확인했습니다.

 

지금까지 글작성, 수정, 삭제 기능을 구현했으니 다음 장에는 게시글 목록을 깔끔하게 보기 위하여

다음 장에는 페이징 기능을 구현하겠습니다!!

'JAVA > blog' 카테고리의 다른 글

페이징 처리(2)  (0) 2020.07.11
페이징 처리(1)  (0) 2020.07.11
해당 게시물 조회  (0) 2020.07.09
게시글 목록 구현  (0) 2020.07.09
controller redirect  (0) 2020.07.09

+ Recent posts