
1. ๊ฒ์ํ ๋ฉ์ธ ํ์ด์ง `bbs.jsp`๋ง๋ค๊ธฐ
๋จผ์ `main.jsp` ํ์ด์ง์์ ๊ฒ์ํ ๋ถ๋ถ href ์์ฑ์ "bbs.jsp" ๋ฅผ ์ฐ๊ฒฐํด์ค๋ค.

`main.jsp` ํ์ด์ง๋ฅผ ๋ณต์ฌํด์ webapp ์๋ค ๋ถ์ฌ๋ฃ๊ธฐ ํ๊ณ ์ด๋ฆ๋ง `bbs.jsp`๋ก ๋ฐ๊พธ์.
์ฌ๊ธฐ์ ์ฝ๋์ ์์ ์ข ๋ณผ ๊ฒ์ด๋ค.

๋ง๋ค์์ผ๋ฉด `Home`์ ์๋ active ํด๋์ค๋ฅผ `๊ฒ์ํ`์ผ๋ก ์ฎ๊ฒจ ์ค์ ํ์ฌ ์ ํํ ํ์ด์ง์์ ๊ฐ์์ ์ผ๋ก ๋ณด์ฌ ์ค๋ค.

๊ทธ ๋ค์ ๋ค๋น๊ฒ์ด์ ๋ฐ ์๋์ ๊ฒ์ํ ํ์์ ํ ์ด๋ธ์ ์ฝ์ ํด ์ค๋ค.
ํ ์ด๋ธ์ ๋ง๋ค๊ธฐ ์ ์ `<div>` ํ๊ทธ๋ก container์ row ์์ญ์ ์ก์ ์ฃผ๊ณ ํ ์ด๋ธ์ ๋ง๋ค์ด์ฃผ์.
<div class="container">
<div class="row">
<table class="table table-striped" style="text-align: center; border: 1px solid #dddddd;">
<thead>
<tr>
<th style="background-color: #eeeeee; text-align: center;">๋ฒํธ</th>
<th style="background-color: #eeeeee; text-align: center;">์ ๋ชฉ</th>
<th style="background-color: #eeeeee; text-align: center;">์์ฑ์</th>
<th style="background-color: #eeeeee; text-align: center;">์์ฑ์ผ</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>์๋
ํ์ธ์</td>
<td>์ต๋ค์ธ</td>
<td>2025-12-08</td>
</tr>
</tbody>
</table>
<a href="write.jsp" class="btn btn-primary ms-auto" style="width: auto;">๊ธ์ฐ๊ธฐ</a>
</div>
</div>
`<thead>`์๋ ๊ฒ์ํ ์์๋ค์ ์ ๋ชฉ์ ๋ฃ์ด์ค๋ค. ํ์๋ `๋ฒํธ`, `์ ๋ชฉ`, `์์ฑ์`, `์์ฑ์ผ` ๋ค ๊ฐ์ง ํญ๋ชฉ๋ง ๋ฃ์ด์ฃผ์๊ณ `<tbody>`์์ญ์๋ ์ค์ ๋ก ๋ฐ์ดํฐ๋ค์ด ํ์๊ฐ ๋ ๊ฑด๋ฐ ์ง๊ธ์ ๋ ์ด์์๋ง ๊ฐ๋จํ ํ์ธํด๋ณด๋ ค๊ณ ๊ทธ๋ฅ ์์์ ๋ฐ์ดํฐ ํ ์ค๋ง ๋ฃ์ด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ `<a>`ํ๊ทธ๋ก ๊ธ์ฐ๊ธฐ ๋ฒํผ๊น์ง ํ๋ ์์ฑํด์ฃผ๊ณ ํ๋ก์ ํธ๋ฅผ ์คํํด๋ณด์.
์คํํ๋ฉด์์ ๋ก๊ทธ์ธํด์ฃผ๊ณ ๊ฒ์ํ ๋ฒํผ ๋๋ฌ๋ณด์. `bbs.jsp`ํ์ด์ง๋ก ์ ์ด๋ํ๊ณ ๊ฒ์ํ ํ์์ด ์ ๋์จ๋ค. ํ ์ด๋ธ ๊ฐ์ด๋ฐ ์ ๋ ฌ๊ณผ ๊ธ์ฐ๊ธฐ ๋ฒํผ `ms-auto`์์ฑ์ผ๋ก ์ค๋ฅธ์ชฝ ์ ๋ ฌ๋ ์ ๋์ด ์๊ณ , ๊ธ์ฐ๊ธฐ ๋ฒํผ ํด๋ฆญํ์ ๋ `write.jsp` ํ์ด์ง๋ก ๋์ด๊ฐ๋ฉด ์ฑ๊ณต!

`write.jsp` ํ์ด์ง๋ ์์ง ์ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ HTTP ์ํ ์ฝ๋ 404 ๋์ค๋ฉด ์ฑ๊ณต์ด๋ค ใ ใ

`bbs.jsp` ์ ์ฒด์์ค
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/bootstrap.css">
<title>JSP ๊ฒ์ํ ์น ์ฌ์ดํธ</title>
</head>
<body>
<%
String userID = null;
if (session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
%>
<nav class="navbar navbar-expand-lg bg-body-tertiary">
<div class="container-fluid">
<a class="navbar-brand" href="#">JSP ์น์ฌ์ดํธ</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item"><a class="nav-link" aria-current="page" href="main.jsp">Home</a></li>
<li class="nav-item"><a class="nav-link active" href="bbs.jsp">๊ฒ์ํ</a></li>
</ul>
<%
if(userID == null) { // ๋ก๊ทธ์ธ ํ์ง ์์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ํ๋ฉด
%>
<ul class="navbar-nav ms-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
์ ์ํ๊ธฐ<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="login.jsp">๋ก๊ทธ์ธ</a></li>
<li><a class="dropdown-item" href="join.jsp">ํ์๊ฐ์
</a></li>
</ul>
</li>
</ul>
<%
} else { // ๋ก๊ทธ์ธ ํ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ํ๋ฉด
%>
<ul class="navbar-nav ms-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
ํ์๊ด๋ฆฌ<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="logoutAction.jsp">๋ก๊ทธ์์</a></li>
</ul>
</li>
</ul>
<%
}
%>
</div>
</div>
</nav>
<div style="height: 40px"></div>
<div class="container">
<div class="row">
<table class="table table-striped" style="text-align: center; border: 1px solid #dddddd;">
<thead>
<tr>
<th style="background-color: #eeeeee; text-align: center;">๋ฒํธ</th>
<th style="background-color: #eeeeee; text-align: center;">์ ๋ชฉ</th>
<th style="background-color: #eeeeee; text-align: center;">์์ฑ์</th>
<th style="background-color: #eeeeee; text-align: center;">์์ฑ์ผ</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>์๋
ํ์ธ์</td>
<td>์ต๋ค์ธ</td>
<td>2025-12-08</td>
</tr>
</tbody>
</table>
<a href="write.jsp" class="btn btn-primary ms-auto" style="width: auto;">๊ธ์ฐ๊ธฐ</a>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
2. DB์์ ๊ฒ์ํ ๊ด๋ฆฌํ๋ BBS ํ ์ด๋ธ ๋ง๋ค๊ธฐ
์ฌ๊ธฐ๊น์ง ๋ง๋ฌด๋ฆฌํ์ผ๋ฉด MySQL์์ ๊ฒ์ํ์ ๊ด๋ฆฌํด์ค BBS ํ ์ด๋ธ์ ๋ง๋ค๋ฌ ๊ฐ์
MySQL Command Line ์คํ

๋ฃจํธ๊ณ์ ๋น๋ฐ๋ฒํธ ์
๋ ฅํ๊ณ , `use BBS;` ๋ช
๋ น์ด๋ก BBS ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ ์

๊ฒ์ํ์ ๊ด๋ฆฌํ๋ bbs ํ ์ด๋ธ ๋ง๋ค๊ณ ์ปฌ๋ผ 6๊ฐ ๋ง๋ค์ด ์ค ํ, `bbsID`๋ฅผ PK๋ก ์ง์
`bbsID`๋ ๊ธ๋ฒํธ, `bbsTitle`์ ๊ธ์ ๋ชฉ, `userID`๋ ์์ฑ์ ์์ด๋ `bbsDate`๋ ์์ฑ์ผ, `bbsContent`๋ ๊ธ๋ด์ฉ์ธ๋ฐ 2048๊ธ์๋ก ํฌ๊ธฐ๋ฅผ ์ค์ ํด์ฃผ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฒ์๊ธ์ 500~1000์ ์ ๋์ด๊ธฐ ๋๋ฌธ์, 2048์๋ ์ถฉ๋ถํ ํฌ๊ธฐ์ด๋ค.
๋จ์ํ ๊ฒ์ํ์ด๋ ์ผ๋ฐ์ ์ธ ์ปค๋ฎค๋ํฐ์์๋ 2048์(2KB ์ ๋)๋ฉด ์ถฉ๋ถํ์ง๋ง ๋ง์ฝ์ ๊ธด ๊ฒ์๊ธ์ด๋ ๊ธฐ์ฌ ํ์์ ๊ธ์ ๋ค๋ฃจ๊ฑฐ๋, ๋ฉํฐ๋ฏธ๋์ด ํฌํจ์ ๊ณ ๋ คํ๋ ๊ฒฝ์ฐ TEXT๋ MEDIUMTEXT๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข๋ค.
`bbsAvailable`์ ๊ฒ์๊ธ์ ์ญ์ ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ์ปฌ๋ผ์ด๋ค.
`bbsAvailable = 1 (๋๋ TRUE)` ๊ฒ์๊ธ์ด ์ญ์ ๋์ง ์์ ์ํ๋ก, ์ฌ์ฉ์๋ค์ด ๊ฒ์๊ธ์ ๋ณผ ์ ์๊ณ , ์ ์์ ์ผ๋ก ๊ฒ์๊ธ์ด ํ์ฑํ๋ ์ํ
`bbsAvailable = 0 (๋๋ FALSE)` ๊ฒ์๊ธ์ด ์ญ์ ๋ ์ํ๋ก, ๊ฒ์๊ธ์ด ์ญ์ ๋ ๊ฒ์ฒ๋ผ ์ทจ๊ธ๋์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ด์ง ์๊ฑฐ๋, ๋ ์ด์ ์ ๊ทผํ ์ ์๋ ์ํ
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ฉด, ์ค์ ๋ก ๊ฒ์๊ธ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์์ ํ ์ญ์ ํ์ง ์๊ณ , ๋จ์ํ ๋นํ์ฑํํ์ฌ ๋์ค์ ๋ณต๊ตฌํ ์ ์๋๋ก ํ ์ ์๋ค.

`show tables;` ๋ช ๋ น์ด์ `explain ํ ์ด๋ธ๋ช `์ผ๋ก ํ์ฌ ํ ์ด๋ธ ๋ณด๊ธฐ

ํ ์ด๋ธ์ ์์ฑํ์ผ๋ฉด ์ดํด๋ฆฝ์ค๋ก ๋์๊ฐ์ ํ๋ก์ ํธ์ ์๋ฐ ์์คํ์ผ(`src`) > `New` > `Package`

3. ๊ฒ์ํ(BBS)์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ์๋ฐ๋น ๋ง๋ค๊ธฐ
์์ฑ๋ ํจํค์ง ์์ ๊ฒ์ํ(BBS)์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ Java ํด๋์ค `Bbs.java` (์๋ฐ ๋น์ฆ) ๋ง๋ค๊ธฐ
ํด๋์ค ์ด๋ฆ ๋งจ ์๊ธ์๋ ๋๋ฌธ์๋ก ํด ์ค.
์๋ฐ ๋น์ฆ๋ ํ๋์ ๊ฒ์๊ธ ์ ๋ณด๋ฅผ ๋ด์ ์ ์๋ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ ํ
์ฌ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ๊ณผ ํก์ฌํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง์ผ๋ก์ ์ ๋ฐ์ ์ธ ๊ฒ์๊ธ ํ๋๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ์๋ฐ์ ํ๋ก๊ทธ๋จ

์์์ DB์ ์์ฑํ BBS ํ ์ด๋ธ๊ณผ ์ปฌ๋ผ๋ช ์ผ์นํ๋๋ก ๋ง๋ ๋ค.

๊ฒ์ํ ์์คํ ์์ ๊ฒ์๊ธ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋๊ณ ๊ฐ ๋ณ์๋ ๊ฒ์๊ธ์ ๋ํ ์์ฑ์ ์ ์ํ ๊ฒ์ด๋ค.
์ฆ, ์์์ ๋งํ ๊ฒ์ฒ๋ผ ์๋ฐ๋น์ ๊ฒ์๊ธ์ ํ๋์ ๊ฐ์ฒด๋ก ๋ค๋ฃฐ ์ ์๋๋ก ๋ง๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๊ณ ๊ฒ์ํ ์์คํ ์์ ๊ฒ์๊ธ CRUD (์์ฑ, ์กฐํ, ์์ , ์ญ์ ) ์์ ์ ํ ๋ ์ฌ์ฉ๋๋ค.
์๋ ๋น ๊ณต๊ฐ์ ๋ง์ฐ์ค ์ฐํด๋ฆญ > Source > Generate Getters and Setters > Select All > Generate

`Bbs.java` ์ ์ฒด ์์ค
package bbs;
public class Bbs {
private int bbsID;
private String bbsTitle;
private String userID;
private String bbsDate;
private String bbsContent;
private int bbsAvailable;
public int getBbsID() {
return bbsID;
}
public void setBbsID(int bbsID) {
this.bbsID = bbsID;
}
public String getBbsTitle() {
return bbsTitle;
}
public void setBbsTitle(String bbsTitle) {
this.bbsTitle = bbsTitle;
}
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
public String getBbsDate() {
return bbsDate;
}
public void setBbsDate(String bbsDate) {
this.bbsDate = bbsDate;
}
public String getBbsContent() {
return bbsContent;
}
public void setBbsContent(String bbsContent) {
this.bbsContent = bbsContent;
}
public int getBbsAvailable() {
return bbsAvailable;
}
public void setBbsAvailable(int bbsAvailable) {
this.bbsAvailable = bbsAvailable;
}
}
'ํ๋ก๊ทธ๋๋ฐ์ธ์ด > Spring&JSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ

1. ๊ฒ์ํ ๋ฉ์ธ ํ์ด์ง bbs.jsp
๋ง๋ค๊ธฐ
๋จผ์ main.jsp
ํ์ด์ง์์ ๊ฒ์ํ ๋ถ๋ถ href ์์ฑ์ "bbs.jsp" ๋ฅผ ์ฐ๊ฒฐํด์ค๋ค.

main.jsp
ํ์ด์ง๋ฅผ ๋ณต์ฌํด์ webapp ์๋ค ๋ถ์ฌ๋ฃ๊ธฐ ํ๊ณ ์ด๋ฆ๋ง bbs.jsp
๋ก ๋ฐ๊พธ์.
์ฌ๊ธฐ์ ์ฝ๋์ ์์ ์ข ๋ณผ ๊ฒ์ด๋ค.

๋ง๋ค์์ผ๋ฉด Home
์ ์๋ active ํด๋์ค๋ฅผ ๊ฒ์ํ
์ผ๋ก ์ฎ๊ฒจ ์ค์ ํ์ฌ ์ ํํ ํ์ด์ง์์ ๊ฐ์์ ์ผ๋ก ๋ณด์ฌ ์ค๋ค.

๊ทธ ๋ค์ ๋ค๋น๊ฒ์ด์ ๋ฐ ์๋์ ๊ฒ์ํ ํ์์ ํ ์ด๋ธ์ ์ฝ์ ํด ์ค๋ค.
ํ
์ด๋ธ์ ๋ง๋ค๊ธฐ ์ ์ <div>
ํ๊ทธ๋ก container์ row ์์ญ์ ์ก์ ์ฃผ๊ณ ํ
์ด๋ธ์ ๋ง๋ค์ด์ฃผ์.
<div class="container"> <div class="row"> <table class="table table-striped" style="text-align: center; border: 1px solid #dddddd;"> <thead> <tr> <th style="background-color: #eeeeee; text-align: center;">๋ฒํธ</th> <th style="background-color: #eeeeee; text-align: center;">์ ๋ชฉ</th> <th style="background-color: #eeeeee; text-align: center;">์์ฑ์</th> <th style="background-color: #eeeeee; text-align: center;">์์ฑ์ผ</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>์๋
ํ์ธ์</td> <td>์ต๋ค์ธ</td> <td>2025-12-08</td> </tr> </tbody> </table> <a href="write.jsp" class="btn btn-primary ms-auto" style="width: auto;">๊ธ์ฐ๊ธฐ</a> </div> </div>
<thead>
์๋ ๊ฒ์ํ ์์๋ค์ ์ ๋ชฉ์ ๋ฃ์ด์ค๋ค. ํ์๋ ๋ฒํธ
, ์ ๋ชฉ
, ์์ฑ์
, ์์ฑ์ผ
๋ค ๊ฐ์ง ํญ๋ชฉ๋ง ๋ฃ์ด์ฃผ์๊ณ <tbody>
์์ญ์๋ ์ค์ ๋ก ๋ฐ์ดํฐ๋ค์ด ํ์๊ฐ ๋ ๊ฑด๋ฐ ์ง๊ธ์ ๋ ์ด์์๋ง ๊ฐ๋จํ ํ์ธํด๋ณด๋ ค๊ณ ๊ทธ๋ฅ ์์์ ๋ฐ์ดํฐ ํ ์ค๋ง ๋ฃ์ด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ <a>
ํ๊ทธ๋ก ๊ธ์ฐ๊ธฐ ๋ฒํผ๊น์ง ํ๋ ์์ฑํด์ฃผ๊ณ ํ๋ก์ ํธ๋ฅผ ์คํํด๋ณด์.
์คํํ๋ฉด์์ ๋ก๊ทธ์ธํด์ฃผ๊ณ ๊ฒ์ํ ๋ฒํผ ๋๋ฌ๋ณด์. bbs.jsp
ํ์ด์ง๋ก ์ ์ด๋ํ๊ณ ๊ฒ์ํ ํ์์ด ์ ๋์จ๋ค. ํ
์ด๋ธ ๊ฐ์ด๋ฐ ์ ๋ ฌ๊ณผ ๊ธ์ฐ๊ธฐ ๋ฒํผ ms-auto
์์ฑ์ผ๋ก ์ค๋ฅธ์ชฝ ์ ๋ ฌ๋ ์ ๋์ด ์๊ณ , ๊ธ์ฐ๊ธฐ ๋ฒํผ ํด๋ฆญํ์ ๋ write.jsp
ํ์ด์ง๋ก ๋์ด๊ฐ๋ฉด ์ฑ๊ณต!

write.jsp
ํ์ด์ง๋ ์์ง ์ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ HTTP ์ํ ์ฝ๋ 404 ๋์ค๋ฉด ์ฑ๊ณต์ด๋ค ใ
ใ

bbs.jsp
์ ์ฒด์์ค
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.io.PrintWriter" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="css/bootstrap.css"> <title>JSP ๊ฒ์ํ ์น ์ฌ์ดํธ</title> </head> <body> <% String userID = null; if (session.getAttribute("userID") != null) { userID = (String) session.getAttribute("userID"); } %> <nav class="navbar navbar-expand-lg bg-body-tertiary"> <div class="container-fluid"> <a class="navbar-brand" href="#">JSP ์น์ฌ์ดํธ</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav"> <li class="nav-item"><a class="nav-link" aria-current="page" href="main.jsp">Home</a></li> <li class="nav-item"><a class="nav-link active" href="bbs.jsp">๊ฒ์ํ</a></li> </ul> <% if(userID == null) { // ๋ก๊ทธ์ธ ํ์ง ์์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ํ๋ฉด %> <ul class="navbar-nav ms-auto"> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> ์ ์ํ๊ธฐ<span class="caret"></span></a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="login.jsp">๋ก๊ทธ์ธ</a></li> <li><a class="dropdown-item" href="join.jsp">ํ์๊ฐ์
</a></li> </ul> </li> </ul> <% } else { // ๋ก๊ทธ์ธ ํ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ํ๋ฉด %> <ul class="navbar-nav ms-auto"> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> ํ์๊ด๋ฆฌ<span class="caret"></span></a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="logoutAction.jsp">๋ก๊ทธ์์</a></li> </ul> </li> </ul> <% } %> </div> </div> </nav> <div style="height: 40px"></div> <div class="container"> <div class="row"> <table class="table table-striped" style="text-align: center; border: 1px solid #dddddd;"> <thead> <tr> <th style="background-color: #eeeeee; text-align: center;">๋ฒํธ</th> <th style="background-color: #eeeeee; text-align: center;">์ ๋ชฉ</th> <th style="background-color: #eeeeee; text-align: center;">์์ฑ์</th> <th style="background-color: #eeeeee; text-align: center;">์์ฑ์ผ</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>์๋
ํ์ธ์</td> <td>์ต๋ค์ธ</td> <td>2025-12-08</td> </tr> </tbody> </table> <a href="write.jsp" class="btn btn-primary ms-auto" style="width: auto;">๊ธ์ฐ๊ธฐ</a> </div> </div> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js"></script> </body> </html>
2. DB์์ ๊ฒ์ํ ๊ด๋ฆฌํ๋ BBS ํ ์ด๋ธ ๋ง๋ค๊ธฐ
์ฌ๊ธฐ๊น์ง ๋ง๋ฌด๋ฆฌํ์ผ๋ฉด MySQL์์ ๊ฒ์ํ์ ๊ด๋ฆฌํด์ค BBS ํ ์ด๋ธ์ ๋ง๋ค๋ฌ ๊ฐ์
MySQL Command Line ์คํ

๋ฃจํธ๊ณ์ ๋น๋ฐ๋ฒํธ ์
๋ ฅํ๊ณ , use BBS;
๋ช
๋ น์ด๋ก BBS ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ ์

๊ฒ์ํ์ ๊ด๋ฆฌํ๋ bbs ํ
์ด๋ธ ๋ง๋ค๊ณ ์ปฌ๋ผ 6๊ฐ ๋ง๋ค์ด ์ค ํ, bbsID
๋ฅผ PK๋ก ์ง์
bbsID
๋ ๊ธ๋ฒํธ, bbsTitle
์ ๊ธ์ ๋ชฉ, userID
๋ ์์ฑ์ ์์ด๋ bbsDate
๋ ์์ฑ์ผ, bbsContent
๋ ๊ธ๋ด์ฉ์ธ๋ฐ 2048๊ธ์๋ก ํฌ๊ธฐ๋ฅผ ์ค์ ํด์ฃผ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฒ์๊ธ์ 500~1000์ ์ ๋์ด๊ธฐ ๋๋ฌธ์, 2048์๋ ์ถฉ๋ถํ ํฌ๊ธฐ์ด๋ค.
๋จ์ํ ๊ฒ์ํ์ด๋ ์ผ๋ฐ์ ์ธ ์ปค๋ฎค๋ํฐ์์๋ 2048์(2KB ์ ๋)๋ฉด ์ถฉ๋ถํ์ง๋ง ๋ง์ฝ์ ๊ธด ๊ฒ์๊ธ์ด๋ ๊ธฐ์ฌ ํ์์ ๊ธ์ ๋ค๋ฃจ๊ฑฐ๋, ๋ฉํฐ๋ฏธ๋์ด ํฌํจ์ ๊ณ ๋ คํ๋ ๊ฒฝ์ฐ TEXT๋ MEDIUMTEXT๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข๋ค.
bbsAvailable
์ ๊ฒ์๊ธ์ ์ญ์ ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ์ปฌ๋ผ์ด๋ค.bbsAvailable = 1 (๋๋ TRUE)
๊ฒ์๊ธ์ด ์ญ์ ๋์ง ์์ ์ํ๋ก, ์ฌ์ฉ์๋ค์ด ๊ฒ์๊ธ์ ๋ณผ ์ ์๊ณ , ์ ์์ ์ผ๋ก ๊ฒ์๊ธ์ด ํ์ฑํ๋ ์ํbbsAvailable = 0 (๋๋ FALSE)
๊ฒ์๊ธ์ด ์ญ์ ๋ ์ํ๋ก, ๊ฒ์๊ธ์ด ์ญ์ ๋ ๊ฒ์ฒ๋ผ ์ทจ๊ธ๋์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ด์ง ์๊ฑฐ๋, ๋ ์ด์ ์ ๊ทผํ ์ ์๋ ์ํ
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ฉด, ์ค์ ๋ก ๊ฒ์๊ธ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์์ ํ ์ญ์ ํ์ง ์๊ณ , ๋จ์ํ ๋นํ์ฑํํ์ฌ ๋์ค์ ๋ณต๊ตฌํ ์ ์๋๋ก ํ ์ ์๋ค.

show tables;
๋ช
๋ น์ด์ explain ํ
์ด๋ธ๋ช
์ผ๋ก ํ์ฌ ํ
์ด๋ธ ๋ณด๊ธฐ

ํ
์ด๋ธ์ ์์ฑํ์ผ๋ฉด ์ดํด๋ฆฝ์ค๋ก ๋์๊ฐ์ ํ๋ก์ ํธ์ ์๋ฐ ์์คํ์ผ(src
) > New
> Package

3. ๊ฒ์ํ(BBS)์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ์๋ฐ๋น ๋ง๋ค๊ธฐ
์์ฑ๋ ํจํค์ง ์์ ๊ฒ์ํ(BBS)์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ Java ํด๋์ค Bbs.java
(์๋ฐ ๋น์ฆ) ๋ง๋ค๊ธฐ
ํด๋์ค ์ด๋ฆ ๋งจ ์๊ธ์๋ ๋๋ฌธ์๋ก ํด ์ค.
์๋ฐ ๋น์ฆ๋ ํ๋์ ๊ฒ์๊ธ ์ ๋ณด๋ฅผ ๋ด์ ์ ์๋ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ ํ
์ฌ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ๊ณผ ํก์ฌํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง์ผ๋ก์ ์ ๋ฐ์ ์ธ ๊ฒ์๊ธ ํ๋๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ์๋ฐ์ ํ๋ก๊ทธ๋จ

์์์ DB์ ์์ฑํ BBS ํ ์ด๋ธ๊ณผ ์ปฌ๋ผ๋ช ์ผ์นํ๋๋ก ๋ง๋ ๋ค.

๊ฒ์ํ ์์คํ ์์ ๊ฒ์๊ธ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋๊ณ ๊ฐ ๋ณ์๋ ๊ฒ์๊ธ์ ๋ํ ์์ฑ์ ์ ์ํ ๊ฒ์ด๋ค.
์ฆ, ์์์ ๋งํ ๊ฒ์ฒ๋ผ ์๋ฐ๋น์ ๊ฒ์๊ธ์ ํ๋์ ๊ฐ์ฒด๋ก ๋ค๋ฃฐ ์ ์๋๋ก ๋ง๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๊ณ ๊ฒ์ํ ์์คํ ์์ ๊ฒ์๊ธ CRUD (์์ฑ, ์กฐํ, ์์ , ์ญ์ ) ์์ ์ ํ ๋ ์ฌ์ฉ๋๋ค.
์๋ ๋น ๊ณต๊ฐ์ ๋ง์ฐ์ค ์ฐํด๋ฆญ > Source > Generate Getters and Setters > Select All > Generate

Bbs.java
์ ์ฒด ์์ค
package bbs; public class Bbs { private int bbsID; private String bbsTitle; private String userID; private String bbsDate; private String bbsContent; private int bbsAvailable; public int getBbsID() { return bbsID; } public void setBbsID(int bbsID) { this.bbsID = bbsID; } public String getBbsTitle() { return bbsTitle; } public void setBbsTitle(String bbsTitle) { this.bbsTitle = bbsTitle; } public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } public String getBbsDate() { return bbsDate; } public void setBbsDate(String bbsDate) { this.bbsDate = bbsDate; } public String getBbsContent() { return bbsContent; } public void setBbsContent(String bbsContent) { this.bbsContent = bbsContent; } public int getBbsAvailable() { return bbsAvailable; } public void setBbsAvailable(int bbsAvailable) { this.bbsAvailable = bbsAvailable; } }