Spring MVC 게시판 만들기 예제 (게시글 작성 코드 / 뷰와 작성 코드 구분)

Yeeun·2025년 4월 29일
0

SpringBoot

목록 보기
30/46

뷰와 게시글 업로드 코드 구분시

📋 Spring MVC 게시판 만들기 예제

📁 1. getBoardList.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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>글목록</title>
	<style>
		.container {
			text-align: center;
		}
		.container table {
			margin: 0 auto;
			border-collapse: collapse;
		}
		table, th, td {
			border: 1px solid #aaa;
			padding: 8px;
		}
	</style>
</head>
<body>
	<div class="container">
		<h1>게시글 목록</h1>
		<table>
			<tr>
				<th width="100">번호</th>
				<th width="200">제목</th>
				<th width="150">작성자</th>
				<th width="150">등록일</th>
				<th width="100">조회수</th>
			</tr>
			<c:forEach var="board" items="${boardList}">
				<tr>
					<td>${board.seq}</td>
					<td><a href="getBoard?seq=${board.seq}">${board.title}</a></td>
					<td>${board.writer}</td>
					<td>
						<fmt:formatDate value="${board.createDate}" pattern="yyyy-MM-dd" />
					</td>
					<td>${board.cnt}</td>
				</tr>
			</c:forEach>
		</table>
		<br>
		<a href="insertBoardView">새글등록</a>
	</div>
</body>
</html>

📁 2. getBoard.jsp – 게시글 상세 보기 및 수정

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시글 상세</title>
</head>
<body>
<center>
<h3>게시글 상세</h3>
<hr>
<form action="updateBoard" method="post">
	<input name="seq" type="hidden" value="${board.seq}">
	<table border="1" cellpadding="0" cellspacing="0">
		<tr>
			<td bgcolor="orange" width="70">제목</td>
			<td><input type="text" name="title" value="${board.title}"></td>
		</tr>
		<tr>
			<td bgcolor="orange">작성자</td>
			<td><input type="text" name="writer" size="10" value="${board.writer}"></td>
		</tr>
		<tr>
			<td bgcolor="orange">등록일</td>
			<td><fmt:formatDate value="${board.createDate}" pattern="yyyy-MM-dd" /></td>
		</tr>
		<tr>
			<td bgcolor="orange">조회수</td>
			<td>${board.cnt}</td>
		</tr>
		<tr>
			<td bgcolor="orange">내용</td>
			<td><textarea cols="40" rows="10" name="content">${board.content}</textarea></td>
		</tr>
		<tr>
			<td colspan="2" align="center">
			<input type="submit" value="글 수정"></td>
		</tr>
	</table>
</form>
<hr>
<a href="insertBoardView">글등록</a>&nbsp;
<a href="deleteBoard?seq=${board.seq}">글삭제</a>&nbsp;
<a href="getBoardList">글목록</a>&nbsp;
</center>
</body>
</html>

📁 3. BoardController.java – Spring 컨트롤러

package ruby.paper.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import ruby.paper.domain.Board;
import ruby.paper.service.BoardService;

@Controller
public class BoardController {
	
	@Autowired
	private BoardService boardService;

	// 게시글 목록 조회
	@GetMapping("/getBoardList")
	public String getBoardList(Model model) {
		List<Board> boardList = boardService.getBoardList();
		model.addAttribute("boardList", boardList);
		return "getBoardList";
	}

	// 글 작성 폼 이동
	@GetMapping("/insertBoardView")
	public String insertBoardView() {
		return "insertBoard";
	}

	// 글 등록 처리
	@PostMapping("/insertBoard")
	public String insertBoard(Board board) {
		boardService.insertBoard(board);
		return "redirect:getBoardList";
	}

	// 게시글 상세 보기
	@GetMapping("/getBoard")
	public String getBoard(Board board, Model model) {
		model.addAttribute("board", boardService.getBoard(board));
		return "getBoard";
	}

	// 게시글 수정 처리
	@PostMapping("/updateBoard")
	public String updateBoard(Board board) {
		boardService.updateBoard(board);
		return "redirect:getBoardList";
	}

	// 게시글 삭제 처리
	@GetMapping("/deleteBoard")
	public String deleteBoard(Board board) {
		boardService.deleteBoard(board);
		return "redirect:getBoardList";
	}
}

📁 4. insertBoard.jsp – 새 게시글 작성 폼

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>새 글 등록</title>
</head>
<body>
<center>
<h3>새 글 등록</h3>
<hr>
<form action="insertBoard" method="post">
	<table border="1" cellpadding="0" cellspacing="0">
		<tr>
			<td bgcolor="orange" width="70">제목</td>
			<td><input type="text" name="title" required></td>
		</tr>
		<tr>
			<td bgcolor="orange">작성자</td>
			<td><input type="text" name="writer" size="10" required></td>
		</tr>
		<tr>
			<td bgcolor="orange">내용</td>
			<td><textarea cols="40" rows="10" name="content" required></textarea></td>
		</tr>
		<tr>
			<td colspan="2" align="center">
			<input type="submit" value="글 등록"></td>
		</tr>
	</table>
</form>
<hr>
<a href="getBoardList">글목록</a>&nbsp;
</center>
</body>
</html>

👌 요약

  • 게시글 목록 페이지 (getBoardList.jsp): 게시글 목록을 출력하고 각 게시글을 클릭하면 상세보기 페이지로 이동합니다.
  • 게시글 상세 페이지 (getBoard.jsp): 게시글의 상세 내용과 함께 수정/삭제 링크가 제공됩니다.
  • 새 글 등록 페이지 (insertBoard.jsp): 새 게시글을 작성할 수 있는 폼을 제공합니다.
  • Spring Controller (BoardController.java): 각 요청을 처리하고, 비즈니스 로직을 수행하는 컨트롤러입니다. 게시글 목록 조회, 상세보기, 등록, 수정, 삭제를 처리합니다.

0개의 댓글