Spring [04] 게시판 만들기(3)

totwo·2024년 8월 30일

Spring/JPA

목록 보기
4/17
post-thumbnail

게시글 삭제 기능

boardContents.jsp

 <a class="btn btn-warning" href="boardDelete.do?idx=${vo.idx}">삭제</a> 

boardController.java (class)

	// 게시글 삭제 기능
	@RequestMapping("/boardDelete.do")
	public String boardDelete(@RequestParam("idx") int idx) {
		System.out.println("게시글 삭제 기능");
		mapper.boardDelete(idx);
		return "redirect:boardList.do";
	}

boardMapper.java (interface)

@Mapper // Mapper로 인식하기 위한 어노테이션
public interface BoardMapper { 
	@Delete("DELETE FROM BOARD WHERE IDX = #{idx}")
	public void boardDelete(int idx);
}

게시글 수정 화면 이동 기능

boardContents.jsp

<a class="btn btn-info" href="boardUpdateForm.do?idx=${vo.idx}">수정</a> 

boardController.java (class)

	// 게시글 수정화면 이동 기능
	@RequestMapping("/boardUpdateForm.do")
	public String boardUpdateForm(@RequestParam("idx") int idx, Model model) {
		System.out.println("게시글 수정화면 이동 기능");
		Board vo = mapper.boardContents(idx); // 수정화면에서 게시글 내용 보이게 하기
		model.addAttribute("vo", vo);
		return "boardUpdateForm";
	}

게시글 수정 기능

boardUpdateForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!-- 함수 기능이 들어가 있는 taglib -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> 
<title>boardUpdateForm.jsp</title>
</head>
<body> 
 
	<div class="container">
	  <h2>Spring MVC01</h2>
	  <div class="panel panel-default">
	    <div class="panel-heading">Board</div>
	    <div class="panel-body">
	    	<form action="boardUpdate.do" method="post">
	    		<input type="hidden" name="idx" value="${vo.idx}">
	    		<!-- hidden : input 태그로 action에게 보내야 하지만 사용자에게 보여주지 않아도 될 때 사용하는 타입 -->	    	
	    		<table class="table"> 
	    			<tr>
	    				<td>제목</td>
	    				<td><input class="form-control" type="text" name="title" value="${vo.title}"></td> 
	    			</tr>
	    			<tr>
	    				<td>내용</td>
	    				<td><textarea class="form-control" name="contents" rows="7" cols="">${vo.contents}</textarea></td>
	    				<!-- textarea 태그는 input 태그처럼 value에 미리볼 내용을 넣는 게 아니라 
	    					 태그 사이에 내용을 넣어주면 된다 -->
	    			</tr>
	    			<tr>
	    				<td>작성자</td>
	    				<td><input class="form-control" type="text" name="writer" value="${vo.writer}"></td> 
	    			</tr>
	    			<tr>
	    				<td>작성일</td> 
	    				<td>${fn:split(vo.indate, " ")[0]}</td>
	    			</tr>
	    			<tr>
	    				<td colspan="2" align="center"> 
	    					<button class="btn btn-info" type="submit">수정</button>
	    					<button class="btn btn-warning" type="reset">취소</button>
	    					<a class="btn btn-default" href="boardList.do">목록</a> 
	    					<!-- a태그에 /를 쓰면 contextpath로 인식하여 앞의 /controller가 지워진다! -->
	    					<!-- 혹시나 이동링크에 /를 쓰고 싶으면 '/controller/boardList.do'라고 링크해야 한다. -->
	    				</td>  
	    			</tr>
	    		</table>
    		</form>
	    </div>
	    <div class="panel-footer">AISCHOOL2024 - Fighting :]</div>
	  </div>
	</div>
</body>
</html>

BoardController.java (class)

	// 게시글 수정 기능
	@RequestMapping("/boardUpdate.do")
	public String boardUpdate(Board vo) {
		System.out.println("게시글 수정 기능");
		mapper.boardUpdate(vo); 
		return "redirect:/boardContents.do?idx=" + vo.getIdx();
	}

boardMapper.java (interface)

@Mapper // Mapper로 인식하기 위한 어노테이션
public interface BoardMapper {	 
	@Update("UPDATE BOARD SET TITLE = #{title}, CONTENTS = #{contents}, WRITER = #{writer} WHERE IDX = #{idx}")
	public void boardUpdate(Board vo);	
}

게시글 조회수 기능

BoardController.java (class)

  • 게시글 상세보기를 클릭하였을 때 조회수를 올리면 된다
	// 게시글 상세 보기 기능
	@RequestMapping("/boardContents.do")
	public String boardContents(@RequestParam("idx") int idx, Model model) {
		// @RequestParam : 하나의 파라미터를 가져올 때 사용하는 어노테이션
		System.out.println("게시글 상세보기 기능");
		mapper.boardCount(idx);
		Board vo = mapper.boardContents(idx);
		model.addAttribute("vo", vo);
		// System.out.println(vo.toString());
		return "boardContents";
	}

boardMapper.java (interface)

@Mapper // Mapper로 인식하기 위한 어노테이션
public interface BoardMapper {
	@Update("UPDATE BOARD SET COUNT = COUNT + 1 WHERE IDX = #{idx}")
	public void boardCount(int idx);
	
}
profile
Hello, World!

0개의 댓글