공부공부

게시판 만들기 12.게시판 수정

냘로하 2020. 8. 26. 16:58

어제 만들었던 페이지에서 버튼 2개를 추가했습니다.

<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
	<title>게시글 상세보기</title>
<!-- 합쳐지고 최소화된 최신 CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<!-- 부가적인 테마 -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
<!-- 합쳐지고 최소화된 최신 자바스크립트 -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
</head>
<body>
<h1 align="center">
게시글 상세보기
</h1>
<table class="table table-hover"  style="width: 50%; margin: auto;">
<c:forEach var="list" items="${boardlist}">
	<tr><th>글 제목</th><td>${list.title }</td></tr>
	<tr><th>글 내용</th><td>${list.content }</td></tr>
	<tr><th>글 번호</th><td>${list.boardno }</td></tr>
	<tr><th>작성일</th><td><fmt:formatDate value="${list.boarddate}" pattern="yyyy년MM월dd일"></fmt:formatDate></td></tr>
	<tr><th>조회수</th><td>${list.hit }</td></tr>
</c:forEach>
</table>
<div align="center" style="text-align: center;">
	<div style="float:center;">
		<button class="btn btn-primary" onclick="location.href='http://localhost/board.com'">게시판으로 돌아가기</button>
		<button class="btn btn-warning" onclick="location.href='http://localhost/board.com/modiboard'">수정하기</button>
		<button class="btn btn-danger" onclick="location.href='http://localhost/board.com/delboard'">삭제하기</button>
	</div>
</div>
</body>
</html>

div 구간 안에 수정하기,삭제하기 버튼을 추가했습니다.

수정하기의 주소는  modiboard, 삭제하기의 주소는 delboard로 정했고, 컨트롤러에서 해당 파라미터를 받을수 있도록 유도하면 됩니다. (현재 컨트롤러에 추가 안했으므로 버튼 누르면 404오류 뜹니다.)

수정하기와 삭제하기는 이전과 다른 작업을 해야하는데, 수정하기 버튼을 누르면 수정하는 페이지로 들어가고, 게시판 리스트로 리다이렉트 하게 만들어야 합니다.

삭제하기도 마찬가지로 작업을 완료하면 게시판리스트로 가게끔 컨트롤러에서 유도해야 합니다.

수정하기의 컨트롤러는 2개의 컨트롤러로 나뉘어져 있습니다.

1.수정할 정보를 불러오는 컨트롤러

2.수정한 정보를 DB에 넣어줄 컨트롤러.

 수정할 정보를 불러오는 컨트롤러는 상세보기의 내용을 불러오기만 하면 됨으로 서비스와 dao는 추가로 만들지 않아도 됩니다.

	@RequestMapping("/board.com/modiboard")
	public ModelAndView modiboard(ModelAndView mv, Board2DTO dto,int boardno) {
		System.out.println("modiboard진입");
		List<Board2DTO> boardlist = service.detailview(boardno);	
		mv.addObject("boardlist", boardlist);
		mv.setViewName("modiboard");
		return mv;
	}

컨트롤러 클래스에 해당 메소드를 추가합니다. 

<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시글 수정</title>
<!-- 합쳐지고 최소화된 최신 CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<!-- 부가적인 테마 -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
<!-- 합쳐지고 최소화된 최신 자바스크립트 -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
</head>
<body>
<h1 align="center">
게시글 수정하기
</h1>
<c:forEach var="list" items="${boardlist}">
<form action="boardmodifin" method="post">
<table class="table table-hover"  style="width: 50%; margin: auto;">
	<tr><th>글 제목</th><td><input type="text" name="title"value="${list.title }"></td></tr>
	<tr><th>글 내용</th><td><input type="text" name="contentt"value="${list.content }"></td></tr>
	<tr><th>글 번호</th><td><input type="hidden"  name="boardno" value="${list.boardno }">${list.boardno }</td></tr>
	<tr><th>작성일</th><td><input type="hidden"  value="${list.boarddate }"><fmt:formatDate value="${list.boarddate}" pattern="yyyy년MM월dd일"></fmt:formatDate></td></tr>
	<tr><th>조회수</th><td><input type="hidden"  value="${list.hit }">${list.hit }</td></tr>
</table>
<div align="center" style="text-align: center;">
	<div style="float:center;">
		<button class="btn btn-primary" onclick="location.href='http://localhost/board.com'">게시판으로 돌아가기</button>
		<input type="submit" class="btn btn-danger" value="수정완료">
	</div>
</div>
</form>
</c:forEach>
</body>
</html>

modiboard.jsp파일입니다.

<form>태그를 이용해서 jsp 페이지 단에서 정보를 들고 boardmodifin 메소드로 이동하고,(보이지는 않지만)boardmodifin 요청을 받은 java단에서 db를 수정합니다. 그 다음  board로 이동합니다.

@RequestMapping("/board.com/boardmodifin")
	public ModelAndView modifin(ModelAndView mv,HttpServletRequest req,Board2DTO dto) throws UnsupportedEncodingException {
		req.setCharacterEncoding("UTF-8");
		System.out.println("modifin진입");
		int boardno     = Integer.parseInt(req.getParameter("boardno"));
		String title 	    = req.getParameter("title");
		String content  = req.getParameter("content");
		dto.setTitle(title);
		dto.setContent(content);
		dto.setBoardno(boardno);
		service.modiboard(dto);
		RedirectView rv = new RedirectView("/board");
		mv.setView(rv);
		return mv;
	}

modifin메소드 입니다.

서비스단 midiboard 메소드

public void modiboard(Board2DTO dto) {
		dao.modiboard(dto);
	}

DAO단 modiboard 메소드

public void modiboard(Board2DTO dto) {
		
		session.update("boarddate.modiboard",dto);
	}

sql.xml 안의 내용 추가

<update id="modiboard" parameterType="com.board2.DTO.Board2DTO">
		update boardtable SET title = #{title},content=#{content}
		where boardno = #{boardno}
	</update>