
1. write.jsp ๊ธ์ฐ๊ธฐ ํ์ด์ง ๋ง๋ค๊ธฐ
๋จผ์ ๊ฒ์๊ธ ์์ฑ ํ์ด์ง `write.jsp`๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ค๊ณ ํ๋ค.
`bbs.jsp`๋ฅผ ๋ณต์ฌํด์ ๋ถ์ฌ ๋ฃ๊ณ ์ค๊ฐ ๋ถ๋ถ๋ง ์์ ํด ์ค ๊ฒ์ด๋ค.
nav๋ฐ ์๋ ๋ถ๋ถ์ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑ
Bootstrap5 ์ด์ฉํ๋ค.
โก `mt-5` margin-top: 5rem;
โก `<input>`ํ๊ทธ์ `required` ์์ฑ ๋ฃ์ผ๋ฉด ๋ธ๋ผ์ฐ์ ์์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํจ. ํ ์คํธ๋ฅผ ์ ๋ ฅ ์ ํ ์ฑ๋ก submit ํ๋ฉด `์ด ์ ๋ ฅ๋์ ์์ฑํ์ธ์.` ๋ผ๋ ๊ฒฝ๊ณ ๋ฉ์ธ์ง๋ฅผ ๋์ด๋ค.
โก `form-control` ํด๋์ค
Bootstrap์์ ์ ๊ณตํ๋ ํด๋์ค ์ค ํ๋๋ก, ์
๋ ฅ ํ๋์ ์คํ์ผ์ ์ฝ๊ฒ ์ผ๊ด์ฑ ์๊ฒ ์ ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ๋จ.
์ด๊ฑฐ ์ฐ๋ฉด ์
๋ ฅ ํ๋(input, textarea, select ๋ฑ)๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์คํ์ผ์ ๊ฐ๊ฒ ๋จ.
๋๋น: 100% (๋ถ๋ชจ ์ปจํ
์ด๋์ ๋๋น๋ฅผ ์ฑ์)
ํ
๋๋ฆฌ: Bootstrap์ ๊ธฐ๋ณธ ํ
๋๋ฆฌ ์คํ์ผ ์ ์ฉ
๋์ด์ ์ฌ๋ฐฑ: ์ ์ ํ ํจ๋ฉ๊ณผ ๋์ด๊ฐ ์ค์ ๋จ
ํฐํธ: Bootstrap์ ๊ธฐ๋ณธ ๊ธ๊ผด ์คํ์ผ ์ ์ฉ
โก `form-group`์ Bootstrap 4์์ ํผ ์์๋ฅผ ๊ทธ๋ฃนํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํด๋์ค๋ก, ํผ ์์์ ๋ ์ด๋ธ์ ํจ๊ป ๋ฌถ์ด ์ ๋ ฌ๊ณผ ๊ฐ๊ฒฉ์ ๊ด๋ฆฌํ๋ ์ญํ ์ ํ๋ค. ์ง๋ง Bootstrap 5์์๋ form-group ํด๋์ค๊ฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋๋ค. ๋์ , `mb-4` ๋๋ ๊ทธ๋ฆฌ๋ ์์คํ ์ผ๋ก ํผ ์์ ๊ฐ์ ๊ฐ๊ฒฉ์ ์กฐ์ ํฉ๋๋ค.ํ ์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ํผ ์์ ๊ฐ์ ๊ฐ๊ฒฉ์ ์กฐ์ ํ๋ค.
- ๊ฐ ์ ๋ ฅ ํ๋ ๊ทธ๋ฃน์ <div class="mb-4">๋ก ๋ฌถ์ด ๊ฐ๊ฒฉ์ ์ค์
- ๋ ์ด๋ธ๊ณผ ์ ๋ ฅ ํ๋ ๊ฐ์ ์ ๋ ฌ์ ์ ์ ํ ๊ด๋ฆฌ
- ํ์์ `d-flex`(div์ flex ์ค์ ํด์ฃผ๋ ํด๋์ค), `form-label`, form-control ๋ฑ ํด๋์ค๋ฅผ ํ์ฉ
โก ๋ฐ์ํ ๋์์ธ์ด๋ ์ผ๊ด๋ UI๋ฅผ ์ ์งํ๋ ค๋ฉด `form-label`์ ์ฌ์ฉ์ ํ๋ ๊ฒ์ด ์ข๋ค.
<div class="container mt-5">
<div class="card shadow-sm">
<div class="card-header bg-secondary text-white text-center">
<h5 class="mb-0">๊ฒ์ํ ๊ธ์ฐ๊ธฐ ์์</h5>
</div>
<div class="card-body">
<form method="post" action="writeAction.jsp">
<!-- ์ ๋ชฉ ์
๋ ฅ -->
<div class="mb-4">
<label for="bbsTitle" class="form-label">๊ธ ์ ๋ชฉ</label><input
type="text" id="bbsTitle" name="bbsTitle" class="form-control"
placeholder="๊ธ ์ ๋ชฉ์ ์
๋ ฅํ์ธ์" maxlength="50" required>
</div>
<!-- ๋ด์ฉ ์
๋ ฅ -->
<div class="mb-4">
<label for="bbsContent" class="form-label">๊ธ ๋ด์ฉ</label>
<textarea id="bbsContent" name="bbsContent" class="form-control"
placeholder="๊ธ ๋ด์ฉ์ ์
๋ ฅํ์ธ์" maxlength="2048" rows="10" required></textarea>
</div>
<!-- ์ ์ถ ๋ฒํผ -->
<div class="d-flex justify-content-end">
<input type="submit" class="btn btn-primary" value="๊ธ์ฐ๊ธฐ">
</div>
</form>
</div>
</div>
</div>

2. BbsDAO.java ํด๋์ค ๋ง๋ค๊ธฐ
์ด์ `writeAction.jsp` ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ผ ํ๋๋ฐ ๊ทธ ์ ์
์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํด์ ๋ฐ์ดํฐ๋ฅผ ๋นผ์ฌ ์ ์๋ ๋ฐ์ดํฐ ์ ๊ทผ ๊ฐ์ฒด `BbsDAO.java` ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ณด์.

๊ธฐ์กด์ ๋ง๋ค์๋ `userDAO` ๊ฐ์ ์๋ถ๋ถ ๊ทธ๋๋ก ๋ณต์ฌ
DB ์ฐ๊ฒฐํ๋ ๊ฑด ์ด์ฐจํผ ๋๊ฐ์ผ๋๊น ๊ทธ๋๋ก ๋ณต๋ถ
// MySQL ์ ์ํ๊ธฐ
private Connection conn;
private PreparedStatement psmt;
private ResultSet rs;
// ์์ฑ์ ๋ง๋ค๊ธฐ
public UserDAO() {
try {
String dbURL = "jdbc:mysql://localhost:3306/BBS";
String dbID = "root";
String dbPassword = "@cholda8291";
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
} catch (Exception e) {
e.printStackTrace();
}
}
์์ฑ์ ๋ฉ์๋ ์ด๋ฆ์ BbsDAO()๋ก ๋ฐ๊ฟ์ค๋ค.

์ด์ 3๊ฐ์ ๋ฉ์๋๋ฅผ ๋ง๋ค๊ฑด๋ฐ ๋ฉ์๋๋ผ๋ฆฌ DB ์ ๊ทผ์ ์์ด์ ๋ง์ฐฐ์ด ์ผ์ด๋ ์ ์์ด์ ์์ ์ ์ธํ ๋ณ์๋ค ์ค์ `private PreparedStatement psmt;`๋ฅผ ์ง์์ฃผ๊ณ ๊ฐ ๋ฉ์๋ ์์ชฝ์ ๋ฃ์ด์ค ๊ฒ์ด๋ค.
ํ์ฌ ์๊ฐ ๊ฐ์ ธ์ค๋ `getDate()`๋ฉ์๋,
๊ธ๋ฒํธ ๊ฐ์ ธ์ค๋ `getNext()` ๋ฉ์๋,
๊ธ ์์ฑํ๋ ๋ฉ์๋ `write()` ๋ฉ์๋๋ฅผ ์ฐจ๋ก๋ก ๋ง๋ ๋ค.
// ํ์ฌ ์๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฉ์๋
// ๊ฒ์ํ์ ๊ธ ์์ฑํ ๋ ํ์ฌ ์๋ฒ์ ์๊ฐ์ ๊ฐ์ ธ์ด
public String getDate() {
String SQL = "SELECT NOW()";
try {
PreparedStatement psmt = conn.prepareStatement(SQL);
rs = psmt.executeQuery();
if (rs.next()) {
return rs.getString(1);
}
} catch (Exception e) {
e.printStackTrace();
}
return ""; // ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ
}
// ๊ธ๋ฒํธ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฉ์๋
public int getNext() {
String SQL = "SELECT bbsID FROM BBS ORDER BY bbsID desc";
try {
PreparedStatement psmt = conn.prepareStatement(SQL);
rs = psmt.executeQuery();
if (rs.next()) {
return rs.getInt(1) + 1;
}
return 1; // ์ฒซ ๋ฒ์งธ ๊ฒ์๋ฌผ์ธ ๊ฒฝ์ฐ
} catch (Exception e) {
e.printStackTrace();
}
return -1; // ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ
}
// ์ค์ ๋ก ๊ธ ์์ฑํ๋ ๋ฉ์๋
public int write(String bbsTitle, String userID, String bbsContent) {
String SQL = "INSERT INTO BBS VALUES (?, ?, ?, ?, ?, ?)";
try {
PreparedStatement psmt = conn.prepareStatement(SQL);
psmt.setInt(1, getNext());
psmt.setString(2, bbsTitle);
psmt.setString(3, userID);
psmt.setString(4, getDate());
psmt.setString(5, bbsContent);
psmt.setInt(6, 1);
/* insert๋ executeUpdate์, executeQuery๋ select
rs = psmt.executeQuery(); */
return psmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return -1; // ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ
}
์ฝ๋ ์๋ชป ์ด ๋ถ๋ถ
`INSERT`๋ฌธ์ ๊ฒฝ์ฐ์๋ `psmt.executeQuery();` ์์
`executeQuery()`๋ ์กฐํ ์ฟผ๋ฆฌ (`SELECT`)๋ฅผ ์คํํ ๋ ์ฌ์ฉ๋๋ฉฐ, ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ๋ฐ๊ธฐ ์ํด ํ์ํ๋ค. ๋ฐ๋ฉด, INSERT, UPDATE, DELETE ๋ฑ `๋ฐ์ดํฐ ์กฐ์ ์ฟผ๋ฆฌ (DML)`๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ์ง ์๊ธฐ ๋๋ฌธ์ `executeUpdate()`๋ง ์ฌ์ฉํ๋ค.
executeUpdate(): INSERT, UPDATE, DELETE์์ ์ฌ์ฉ
์คํ๋ ์ฟผ๋ฆฌ๋ก ์ธํด ์ํฅ์ ๋ฐ์ ํ(row)์ ์๋ฅผ ๋ฐํ
3. writeAction.jsp ํ์ด์ง ๋ง๋ค๊ธฐ
writeAction.jsp ํ์ด์ง๋ ๋ณดํต ์ฌ์ฉ์๊ฐ ๊ฒ์ํ์ ๊ธ์ ์์ฑํ๊ณ ์ ์ถํ๋ ์์ ์ ์ฒ๋ฆฌํ๋ ํ์ด์ง์ด๋ค. ์ด ํ์ด์ง์์๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ค.
- ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ ๋ชฉ๊ณผ ๋ด์ฉ์ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ก์ด ๊ฒ์๊ธ์ ์ฝ์
- ๊ฒ์๊ธ ์ฝ์ ํ ์ ์ ํ ์๋ต(์ฑ๊ณต ๋ฉ์์ง, ์คํจ ๋ฉ์์ง ๋ฑ)์ ๋ฐํ
์ด์ `writeAction.jsp` ํ์ด์ง๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ค๊ณ ํ๋ค. `webapp`์ `joinAction.jsp` ํ์ด์ง ๊ทธ๋๋ก ๋ณต์ฌํด์ ์ด๋ฆ๋ง ๋ฐ๊ฟ์ ์์ฑํด์ฃผ๊ณ ์ฝ๋ ๋ฅผ ์ข ์์ ํด ์ฃผ์.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="bbs.BbsDAO" %>
<%@ page import="java.io.PrintWriter" %>
<% request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id="bbs" class="bbs.Bbs" scope="page" />
<jsp:setProperty name="bbs" property="bbsTitle" />
<jsp:setProperty name="bbs" property="bbsContent" />
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP ๊ฒ์ํ ์น ์ฌ์ดํธ</title>
</head>
<body>
<%
String userID = null;
if (session.getAttribute("userID")!=null) {
userID = (String) session.getAttribute("userID");
}
// ๊ธ์ฐ๊ธฐ๋ ๋ก๊ทธ์ธ์ ํ ํ์๋ง ๊ฐ๋ฅ
if (userID == null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('๋ก๊ทธ์ธ์ ํ์ธ์.')");
script.println("location.href = 'login.jsp'");
script.println("</script>");
} else {
if (bbs.getBbsTitle() == null || bbs.getBbsContent() == null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('์
๋ ฅ์ด ์ ๋ ์ฌํญ์ด ์์ต๋๋ค.')");
script.println("history.back()");
script.println("</script>");
} else {
BbsDAO bbsDAO = new BbsDAO();
int result = bbsDAO.write(bbs.getBbsTitle(), userID, bbs.getBbsContent());
if (result == -1) { // DB์ค๋ฅ ๋ฐ์, ๊ธ์ฐ๊ธฐ ์คํจ
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('๊ธ์ฐ๊ธฐ์ ์คํจํ์ต๋๋ค.')");
script.println("history.back()");
script.println("</script>");
}
else { // ๊ธ์ฐ๊ธฐ ์ฑ๊ณต -> ๊ฒ์ํ ๋ฉ์ธ ํ๋ฉด(bbs.jsp)๋ก ์ด๋
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'bbs.jsp'");
script.println("</script>");
}
}
}
%>
</body>
</html>
์นํ์ด์ง ๊ฐ์ ๊ธ์ฐ๊ธฐ ํ ์คํธํด๋ณด์!

์์ง ๊ธ๋ชฉ๋ก ์๋ง๋ค์ด์ค์ ๊ธ๋ชฉ๋ก์๋ ์๋จ๊ณ MySQL ๊ฐ์ `select * from bbs;` ์ฟผ๋ฆฌ๋ก ์ง์ ํ์ธ ํด ์ฃผ์ด์ผ ํ๋ค.

์ฑ๊ณต
'ํ๋ก๊ทธ๋๋ฐ์ธ์ด > Spring&JSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JSP] ๊ฒ์ํ ๋ง๋ค๊ธฐ 11 _ ๊ฒ์ํ ๋ณด๊ธฐ ๊ธฐ๋ฅ (96) | 2024.12.09 |
---|---|
[JSP] ๊ฒ์ํ ๋ง๋ค๊ธฐ 10 _ ๊ฒ์ํ ๊ธ๋ชฉ๋ก ๊ธฐ๋ฅ (60) | 2024.12.09 |
[JSP] ๊ฒ์ํ ๋ง๋ค๊ธฐ 8 _ ๊ฒ์ํ ๋ฉ์ธ ํ์ด์ง ๋ง๋ค๊ณ ๊ฒ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถํ๊ธฐ (70) | 2024.12.08 |
[JSP] ๊ฒ์ํ ๋ง๋ค๊ธฐ 7 _ ํ์์ธ์ ๊ด๋ฆฌํ๊ธฐ (94) | 2024.12.05 |
[JSP] ๊ฒ์ํ ๋ง๋ค๊ธฐ 6 _ ํ์๊ฐ์ ์ฒ๋ฆฌํ๊ธฐ (68) | 2024.12.04 |

1. write.jsp ๊ธ์ฐ๊ธฐ ํ์ด์ง ๋ง๋ค๊ธฐ
๋จผ์ ๊ฒ์๊ธ ์์ฑ ํ์ด์ง write.jsp
๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ค๊ณ ํ๋ค.
bbs.jsp
๋ฅผ ๋ณต์ฌํด์ ๋ถ์ฌ ๋ฃ๊ณ ์ค๊ฐ ๋ถ๋ถ๋ง ์์ ํด ์ค ๊ฒ์ด๋ค.
nav๋ฐ ์๋ ๋ถ๋ถ์ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑ
Bootstrap5 ์ด์ฉํ๋ค.
โก mt-5
margin-top: 5rem;
โก <input>
ํ๊ทธ์ required
์์ฑ ๋ฃ์ผ๋ฉด ๋ธ๋ผ์ฐ์ ์์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํจ. ํ
์คํธ๋ฅผ ์
๋ ฅ ์ ํ ์ฑ๋ก submit ํ๋ฉด ์ด ์
๋ ฅ๋์ ์์ฑํ์ธ์.
๋ผ๋ ๊ฒฝ๊ณ ๋ฉ์ธ์ง๋ฅผ ๋์ด๋ค.
โก form-control
ํด๋์ค
Bootstrap์์ ์ ๊ณตํ๋ ํด๋์ค ์ค ํ๋๋ก, ์
๋ ฅ ํ๋์ ์คํ์ผ์ ์ฝ๊ฒ ์ผ๊ด์ฑ ์๊ฒ ์ ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ๋จ.
์ด๊ฑฐ ์ฐ๋ฉด ์
๋ ฅ ํ๋(input, textarea, select ๋ฑ)๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์คํ์ผ์ ๊ฐ๊ฒ ๋จ.
๋๋น: 100% (๋ถ๋ชจ ์ปจํ
์ด๋์ ๋๋น๋ฅผ ์ฑ์)
ํ
๋๋ฆฌ: Bootstrap์ ๊ธฐ๋ณธ ํ
๋๋ฆฌ ์คํ์ผ ์ ์ฉ
๋์ด์ ์ฌ๋ฐฑ: ์ ์ ํ ํจ๋ฉ๊ณผ ๋์ด๊ฐ ์ค์ ๋จ
ํฐํธ: Bootstrap์ ๊ธฐ๋ณธ ๊ธ๊ผด ์คํ์ผ ์ ์ฉ
โก form-group
์ Bootstrap 4์์ ํผ ์์๋ฅผ ๊ทธ๋ฃนํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํด๋์ค๋ก, ํผ ์์์ ๋ ์ด๋ธ์ ํจ๊ป ๋ฌถ์ด ์ ๋ ฌ๊ณผ ๊ฐ๊ฒฉ์ ๊ด๋ฆฌํ๋ ์ญํ ์ ํ๋ค. ์ง๋ง Bootstrap 5์์๋ form-group ํด๋์ค๊ฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋๋ค. ๋์ , mb-4
๋๋ ๊ทธ๋ฆฌ๋ ์์คํ
์ผ๋ก ํผ ์์ ๊ฐ์ ๊ฐ๊ฒฉ์ ์กฐ์ ํฉ๋๋ค.ํ
์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ํผ ์์ ๊ฐ์ ๊ฐ๊ฒฉ์ ์กฐ์ ํ๋ค.
- ๊ฐ ์ ๋ ฅ ํ๋ ๊ทธ๋ฃน์ <div class="mb-4">๋ก ๋ฌถ์ด ๊ฐ๊ฒฉ์ ์ค์
- ๋ ์ด๋ธ๊ณผ ์ ๋ ฅ ํ๋ ๊ฐ์ ์ ๋ ฌ์ ์ ์ ํ ๊ด๋ฆฌ
- ํ์์
d-flex
(div์ flex ์ค์ ํด์ฃผ๋ ํด๋์ค),form-label
, form-control ๋ฑ ํด๋์ค๋ฅผ ํ์ฉ
โก ๋ฐ์ํ ๋์์ธ์ด๋ ์ผ๊ด๋ UI๋ฅผ ์ ์งํ๋ ค๋ฉด form-label
์ ์ฌ์ฉ์ ํ๋ ๊ฒ์ด ์ข๋ค.
<div class="container mt-5"> <div class="card shadow-sm"> <div class="card-header bg-secondary text-white text-center"> <h5 class="mb-0">๊ฒ์ํ ๊ธ์ฐ๊ธฐ ์์</h5> </div> <div class="card-body"> <form method="post" action="writeAction.jsp"> <!-- ์ ๋ชฉ ์
๋ ฅ --> <div class="mb-4"> <label for="bbsTitle" class="form-label">๊ธ ์ ๋ชฉ</label><input type="text" id="bbsTitle" name="bbsTitle" class="form-control" placeholder="๊ธ ์ ๋ชฉ์ ์
๋ ฅํ์ธ์" maxlength="50" required> </div> <!-- ๋ด์ฉ ์
๋ ฅ --> <div class="mb-4"> <label for="bbsContent" class="form-label">๊ธ ๋ด์ฉ</label> <textarea id="bbsContent" name="bbsContent" class="form-control" placeholder="๊ธ ๋ด์ฉ์ ์
๋ ฅํ์ธ์" maxlength="2048" rows="10" required></textarea> </div> <!-- ์ ์ถ ๋ฒํผ --> <div class="d-flex justify-content-end"> <input type="submit" class="btn btn-primary" value="๊ธ์ฐ๊ธฐ"> </div> </form> </div> </div> </div>

2. BbsDAO.java ํด๋์ค ๋ง๋ค๊ธฐ
์ด์ writeAction.jsp
ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ผ ํ๋๋ฐ ๊ทธ ์ ์
์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํด์ ๋ฐ์ดํฐ๋ฅผ ๋นผ์ฌ ์ ์๋ ๋ฐ์ดํฐ ์ ๊ทผ ๊ฐ์ฒด BbsDAO.java
ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ณด์.

๊ธฐ์กด์ ๋ง๋ค์๋ userDAO
๊ฐ์ ์๋ถ๋ถ ๊ทธ๋๋ก ๋ณต์ฌ
DB ์ฐ๊ฒฐํ๋ ๊ฑด ์ด์ฐจํผ ๋๊ฐ์ผ๋๊น ๊ทธ๋๋ก ๋ณต๋ถ
// MySQL ์ ์ํ๊ธฐ private Connection conn; private PreparedStatement psmt; private ResultSet rs; // ์์ฑ์ ๋ง๋ค๊ธฐ public UserDAO() { try { String dbURL = "jdbc:mysql://localhost:3306/BBS"; String dbID = "root"; String dbPassword = "@cholda8291"; Class.forName("com.mysql.cj.jdbc.Driver"); conn = DriverManager.getConnection(dbURL, dbID, dbPassword); } catch (Exception e) { e.printStackTrace(); } }
์์ฑ์ ๋ฉ์๋ ์ด๋ฆ์ BbsDAO()๋ก ๋ฐ๊ฟ์ค๋ค.

์ด์ 3๊ฐ์ ๋ฉ์๋๋ฅผ ๋ง๋ค๊ฑด๋ฐ ๋ฉ์๋๋ผ๋ฆฌ DB ์ ๊ทผ์ ์์ด์ ๋ง์ฐฐ์ด ์ผ์ด๋ ์ ์์ด์ ์์ ์ ์ธํ ๋ณ์๋ค ์ค์ private PreparedStatement psmt;
๋ฅผ ์ง์์ฃผ๊ณ ๊ฐ ๋ฉ์๋ ์์ชฝ์ ๋ฃ์ด์ค ๊ฒ์ด๋ค.
ํ์ฌ ์๊ฐ ๊ฐ์ ธ์ค๋ getDate()
๋ฉ์๋,
๊ธ๋ฒํธ ๊ฐ์ ธ์ค๋ getNext()
๋ฉ์๋,
๊ธ ์์ฑํ๋ ๋ฉ์๋ write()
๋ฉ์๋๋ฅผ ์ฐจ๋ก๋ก ๋ง๋ ๋ค.
// ํ์ฌ ์๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฉ์๋ // ๊ฒ์ํ์ ๊ธ ์์ฑํ ๋ ํ์ฌ ์๋ฒ์ ์๊ฐ์ ๊ฐ์ ธ์ด public String getDate() { String SQL = "SELECT NOW()"; try { PreparedStatement psmt = conn.prepareStatement(SQL); rs = psmt.executeQuery(); if (rs.next()) { return rs.getString(1); } } catch (Exception e) { e.printStackTrace(); } return ""; // ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ } // ๊ธ๋ฒํธ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฉ์๋ public int getNext() { String SQL = "SELECT bbsID FROM BBS ORDER BY bbsID desc"; try { PreparedStatement psmt = conn.prepareStatement(SQL); rs = psmt.executeQuery(); if (rs.next()) { return rs.getInt(1) + 1; } return 1; // ์ฒซ ๋ฒ์งธ ๊ฒ์๋ฌผ์ธ ๊ฒฝ์ฐ } catch (Exception e) { e.printStackTrace(); } return -1; // ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ } // ์ค์ ๋ก ๊ธ ์์ฑํ๋ ๋ฉ์๋ public int write(String bbsTitle, String userID, String bbsContent) { String SQL = "INSERT INTO BBS VALUES (?, ?, ?, ?, ?, ?)"; try { PreparedStatement psmt = conn.prepareStatement(SQL); psmt.setInt(1, getNext()); psmt.setString(2, bbsTitle); psmt.setString(3, userID); psmt.setString(4, getDate()); psmt.setString(5, bbsContent); psmt.setInt(6, 1); /* insert๋ executeUpdate์, executeQuery๋ select rs = psmt.executeQuery(); */ return psmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } return -1; // ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ }
์ฝ๋ ์๋ชป ์ด ๋ถ๋ถ
INSERT
๋ฌธ์ ๊ฒฝ์ฐ์๋ psmt.executeQuery();
์์
executeQuery()
๋ ์กฐํ ์ฟผ๋ฆฌ (SELECT
)๋ฅผ ์คํํ ๋ ์ฌ์ฉ๋๋ฉฐ, ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ๋ฐ๊ธฐ ์ํด ํ์ํ๋ค. ๋ฐ๋ฉด, INSERT, UPDATE, DELETE ๋ฑ ๋ฐ์ดํฐ ์กฐ์ ์ฟผ๋ฆฌ (DML)
๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ์ง ์๊ธฐ ๋๋ฌธ์ executeUpdate()
๋ง ์ฌ์ฉํ๋ค.
executeUpdate(): INSERT, UPDATE, DELETE์์ ์ฌ์ฉ
์คํ๋ ์ฟผ๋ฆฌ๋ก ์ธํด ์ํฅ์ ๋ฐ์ ํ(row)์ ์๋ฅผ ๋ฐํ
3. writeAction.jsp ํ์ด์ง ๋ง๋ค๊ธฐ
writeAction.jsp ํ์ด์ง๋ ๋ณดํต ์ฌ์ฉ์๊ฐ ๊ฒ์ํ์ ๊ธ์ ์์ฑํ๊ณ ์ ์ถํ๋ ์์ ์ ์ฒ๋ฆฌํ๋ ํ์ด์ง์ด๋ค. ์ด ํ์ด์ง์์๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ค.
- ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ ๋ชฉ๊ณผ ๋ด์ฉ์ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ก์ด ๊ฒ์๊ธ์ ์ฝ์
- ๊ฒ์๊ธ ์ฝ์ ํ ์ ์ ํ ์๋ต(์ฑ๊ณต ๋ฉ์์ง, ์คํจ ๋ฉ์์ง ๋ฑ)์ ๋ฐํ
์ด์ writeAction.jsp
ํ์ด์ง๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ค๊ณ ํ๋ค. webapp
์ joinAction.jsp
ํ์ด์ง ๊ทธ๋๋ก ๋ณต์ฌํด์ ์ด๋ฆ๋ง ๋ฐ๊ฟ์ ์์ฑํด์ฃผ๊ณ ์ฝ๋ ๋ฅผ ์ข ์์ ํด ์ฃผ์.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="bbs.BbsDAO" %> <%@ page import="java.io.PrintWriter" %> <% request.setCharacterEncoding("UTF-8"); %> <jsp:useBean id="bbs" class="bbs.Bbs" scope="page" /> <jsp:setProperty name="bbs" property="bbsTitle" /> <jsp:setProperty name="bbs" property="bbsContent" /> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP ๊ฒ์ํ ์น ์ฌ์ดํธ</title> </head> <body> <% String userID = null; if (session.getAttribute("userID")!=null) { userID = (String) session.getAttribute("userID"); } // ๊ธ์ฐ๊ธฐ๋ ๋ก๊ทธ์ธ์ ํ ํ์๋ง ๊ฐ๋ฅ if (userID == null) { PrintWriter script = response.getWriter(); script.println("<script>"); script.println("alert('๋ก๊ทธ์ธ์ ํ์ธ์.')"); script.println("location.href = 'login.jsp'"); script.println("</script>"); } else { if (bbs.getBbsTitle() == null || bbs.getBbsContent() == null) { PrintWriter script = response.getWriter(); script.println("<script>"); script.println("alert('์
๋ ฅ์ด ์ ๋ ์ฌํญ์ด ์์ต๋๋ค.')"); script.println("history.back()"); script.println("</script>"); } else { BbsDAO bbsDAO = new BbsDAO(); int result = bbsDAO.write(bbs.getBbsTitle(), userID, bbs.getBbsContent()); if (result == -1) { // DB์ค๋ฅ ๋ฐ์, ๊ธ์ฐ๊ธฐ ์คํจ PrintWriter script = response.getWriter(); script.println("<script>"); script.println("alert('๊ธ์ฐ๊ธฐ์ ์คํจํ์ต๋๋ค.')"); script.println("history.back()"); script.println("</script>"); } else { // ๊ธ์ฐ๊ธฐ ์ฑ๊ณต -> ๊ฒ์ํ ๋ฉ์ธ ํ๋ฉด(bbs.jsp)๋ก ์ด๋ PrintWriter script = response.getWriter(); script.println("<script>"); script.println("location.href = 'bbs.jsp'"); script.println("</script>"); } } } %> </body> </html>
์นํ์ด์ง ๊ฐ์ ๊ธ์ฐ๊ธฐ ํ ์คํธํด๋ณด์!

์์ง ๊ธ๋ชฉ๋ก ์๋ง๋ค์ด์ค์ ๊ธ๋ชฉ๋ก์๋ ์๋จ๊ณ MySQL ๊ฐ์ select * from bbs;
์ฟผ๋ฆฌ๋ก ์ง์ ํ์ธ ํด ์ฃผ์ด์ผ ํ๋ค.

์ฑ๊ณต
'ํ๋ก๊ทธ๋๋ฐ์ธ์ด > Spring&JSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JSP] ๊ฒ์ํ ๋ง๋ค๊ธฐ 11 _ ๊ฒ์ํ ๋ณด๊ธฐ ๊ธฐ๋ฅ (96) | 2024.12.09 |
---|---|
[JSP] ๊ฒ์ํ ๋ง๋ค๊ธฐ 10 _ ๊ฒ์ํ ๊ธ๋ชฉ๋ก ๊ธฐ๋ฅ (60) | 2024.12.09 |
[JSP] ๊ฒ์ํ ๋ง๋ค๊ธฐ 8 _ ๊ฒ์ํ ๋ฉ์ธ ํ์ด์ง ๋ง๋ค๊ณ ๊ฒ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถํ๊ธฐ (70) | 2024.12.08 |
[JSP] ๊ฒ์ํ ๋ง๋ค๊ธฐ 7 _ ํ์์ธ์ ๊ด๋ฆฌํ๊ธฐ (94) | 2024.12.05 |
[JSP] ๊ฒ์ํ ๋ง๋ค๊ธฐ 6 _ ํ์๊ฐ์ ์ฒ๋ฆฌํ๊ธฐ (68) | 2024.12.04 |