Banner

My Tech Blog (Coding/Spring&JSP)



๊พธ๋ฏธ๊ธฐ ๋ผ๊ณ  ํ•˜๊ธฐ์—๋Š” ์†Œ์†Œํ•˜์ง€๋งŒ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์†์„ฑ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„ ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ” ์•„๋ž˜ ๋ฉ”์ธ ์˜์—ญ์— ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์œผ๋กœ ์†Œ๊ฐœ๊ธ€ ์ถ”๊ฐ€main์˜์—ญ์ด๋ผ๊ณ  ํ•ด์•ผ ํ• ์ง€ content ์˜์—ญ์ด๋ผ๊ณ  ํ•ด์•ผ ํ• ์ง€ 1. ์†Œ๊ฐœ๊ธ€ ์ถ”๊ฐ€ `jumbotron`ํŽ˜์ด์ง€ ๋‚ด์—์„œ ๊ฐ•์กฐํ•˜๋Š” ํžˆ์–ด๋กœ ์„น์…˜์ด๊ณ  ํฐ ํ…์ŠคํŠธ์™€ ์—ฌ๋ฐฑ์„ ๊ธฐ๋ณธ์œผ๋กœ ํฌํ•จํ•จ๋ถ€ํŠธ์ŠคํŠธ๋žฉ 5์—์„œ๋Š” Jumbotron ํด๋ž˜์Šค๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ์กฐํ•ฉํ•ด์„œ ๋น„์Šทํ•œ ํšจ๊ณผ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋‚ด์•ผ ํ•œ๋‹ค. `rounded`์š”์†Œ์˜ ๋ชจ์„œ๋ฆฌ๋ฅผ ๋‘ฅ๊ธ€๊ฒŒ ๋งŒ๋“ฌ  border-radius: 0.375rem (์•ฝ 6px)์—ฌ๊ธฐ์„œ rounded-circle, rounded-pill ์“ฐ๋ฉด ๋” ๊ทน๋‹จ์ ์œผ๋กœ(?) ๋‘ฅ๊ทผ ์Šคํƒ€์ผ ๊ฐ€๋Šฅ`display-4`ํ…์ŠคํŠธ๋ฅผ ํฌ๊ฒŒ ํ‘œ์‹œํ•˜๋Š” ํ—ค๋”ฉ ์Šคํƒ€์ผ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์˜ ๋””์Šคํ”Œ๋ ˆ์ด ํด๋ž˜์Šค์ธ๋ฐ ..
1. ๊ฒŒ์‹œ๊ธ€  ์ˆ˜์ •ํ•˜๋Š” update ๋ฉ”์„œ๋“œ ๋งŒ๋“ค๊ธฐBbsDAO ํด๋ž˜์Šค ํ•˜๋‹จ์— ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€public int update(int bbsID, String bbsTitle, String bbsContent) { String SQL = "UPDATE BBS SET bbsTitle = ?, bbsContent = ? WHERE bbsID = ?"; PreparedStatement psmt = null; try { psmt = conn.prepareStatement(SQL); psmt.setString(1, bbsTitle); psmt.setString(2, bbsContent); psmt.setInt(3, bbsID); return p..
1. BbsDAO ํด๋ž˜์Šค์— getBbs() ๋ฉ”์„œ๋“œ ๋งŒ๋“ค๊ธฐ `getBbs(int bbsID)` ๋ฉ”์„œ๋“œ๋Š” ํŠน์ • bbsID๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒŒ์‹œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์กฐํšŒํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.์ฆ‰ ํ•˜๋‚˜์˜ ๊ธ€ ๋‚ด์šฉ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. ์ฒ˜์Œ์— ์ ์€ ์ฝ”๋“œ(ํ‹€๋ฆผ) public Bbs getBbs(int bbsID) { String SQL = "SELECT * FROM BBS WHERE bbsID = ?"; try (PreparedStatement psmt = conn.prepareStatement(SQL); ResultSet rs = psmt.executeQuery()) { psmt.setInt(1, bbsID); if (rs.next()) { ..
๊ธ€๋ชฉ๋ก๊ณผ ํŽ˜์ด์ง€๋„ค์ด์…˜(Pagination)๊ฒŒ์‹œ๋ฌผ์„ DB์—์„œ ๋ถˆ๋Ÿฌ์™€ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋ ค๋ฉด ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…๊ณผ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ๋‘ ๊ฐ€์ง€๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. ๊ฒŒ์‹œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ArrayList๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DB์—์„œ ์ž‘์„ฑ์ž, ์ œ๋ชฉ ๋“ฑ ๊ฒŒ์‹œ๊ธ€์˜ ์ฃผ์š” ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. ์ด ๋•Œ ์ค‘์š”ํ•œ ์ ์€ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ์ด๋‹ค. ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋Š” ํ•œ ํŽ˜์ด์ง€์— ๋ช‡ ๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€์„ ๋ณด์—ฌ์ค„์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ณผ์ •์ด๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ํ•œ ํŽ˜์ด์ง€์— ์ด 10๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€์„ ๊ฐ€์ ธ์˜ค๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ `BbsDAO`์— ํŠน์ • ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ(pageNumber)์— ํ•ด๋‹นํ•˜๋Š” ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ โšก `getList(int pageNumber)`๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ์—์„œ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ์ค€์œผ..
1. write.jsp ๊ธ€์“ฐ๊ธฐ ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ ๋จผ์ € ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ํŽ˜์ด์ง€ `write.jsp`๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๋ ค๊ณ  ํ•œ๋‹ค.`bbs.jsp`๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ ๋„ฃ๊ณ  ์ค‘๊ฐ„ ๋ถ€๋ถ„๋งŒ ์ˆ˜์ • ํ•ด ์ค„ ๊ฒƒ์ด๋‹ค. nav๋ฐ” ์•„๋ž˜ ๋ถ€๋ถ„์— ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑBootstrap5 ์ด์šฉํ–ˆ๋‹ค. โšก `mt-5` margin-top: 5rem;  โšก ``ํƒœ๊ทธ์— `required` ์†์„ฑ ๋„ฃ์œผ๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•จ. ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅ ์•ˆ ํ•œ ์ฑ„๋กœ submit ํ•˜๋ฉด `์ด ์ž…๋ ฅ๋ž€์„ ์ž‘์„ฑํ•˜์„ธ์š”.` ๋ผ๋Š” ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ๋„์šด๋‹ค.  โšก `form-control` ํด๋ž˜์Šค Bootstrap์—์„œ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜๋กœ, ์ž…๋ ฅ ํ•„๋“œ์˜ ์Šคํƒ€์ผ์„ ์‰ฝ๊ฒŒ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ.์ด๊ฑฐ ์“ฐ๋ฉด ์ž…๋ ฅ ํ•„๋“œ(input, textarea, select ๋“ฑ)๊ฐ€ ๊ธฐ๋ณธ..
1. ๊ฒŒ์‹œํŒ ๋ฉ”์ธ ํŽ˜์ด์ง€ `bbs.jsp`๋งŒ๋“ค๊ธฐ๋จผ์ € `main.jsp` ํŽ˜์ด์ง€์—์„œ ๊ฒŒ์‹œํŒ ๋ถ€๋ถ„ href ์†์„ฑ์— "bbs.jsp" ๋ฅผ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค.  `main.jsp` ํŽ˜์ด์ง€๋ฅผ ๋ณต์‚ฌํ•ด์„œ webapp ์—๋‹ค ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜๊ณ  ์ด๋ฆ„๋งŒ `bbs.jsp`๋กœ ๋ฐ”๊พธ์ž.์—ฌ๊ธฐ์„œ ์ฝ”๋“œ์— ์†์„ ์ข€ ๋ณผ ๊ฒƒ์ด๋‹ค. ๋งŒ๋“ค์—ˆ์œผ๋ฉด `Home`์— ์žˆ๋˜ active ํด๋ž˜์Šค๋ฅผ `๊ฒŒ์‹œํŒ`์œผ๋กœ ์˜ฎ๊ฒจ ์ค˜์„œ ํ˜„์žฌ ์„ ํƒํ•œ ํŽ˜์ด์ง€์ž„์„ ๊ฐ€์‹œ์ ์œผ๋กœ ๋ณด์—ฌ ์ค€๋‹ค. ๊ทธ ๋‹ค์Œ ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ” ์•„๋ž˜์— ๊ฒŒ์‹œํŒ ํ˜•์‹์˜ ํ…Œ์ด๋ธ”์„ ์‚ฝ์ž… ํ•ด ์ค€๋‹ค.ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ธฐ ์ „์—  `` ํƒœ๊ทธ๋กœ container์™€ row ์˜์—ญ์„ ์žก์•„ ์ฃผ๊ณ  ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด์ฃผ์ž.  ๋ฒˆํ˜ธ ..
โœ… session ๊ด€๋ฆฌโœ… logout.jspโœ… main.jsp ๋งŒ๋“ค๊ธฐ ์ง€๊ธˆ๊นŒ์ง€ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ๊นŒ์ง€ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค.์ด์ œ ์„ธ์…˜ ๊ด€๋ฆฌ๋ฅผ ํ•ด ๋ณด์ž. `session` ์ด๋ž€ ํ˜„์žฌ ์ ‘์†ํ•œ ํšŒ์›์—๊ฒŒ ํ• ๋‹นํ•ด์ฃผ๋Š” ๊ณ ์œ ํ•œ ์•„์ด๋””์ด๋‹ค.๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•œ ํšŒ์›์—๊ฒŒ ๊ฐ๊ฐ `session`์„ ๋ถ€์—ฌํ•ด์ฃผ๋Š” ๊ณผ์ •์„ ๊ตฌํ˜„ํ•ด๋ณด์ž. `loginAction.jsp`์— `session`์„ ์„ค์ •ํ•ด์ฃผ๋Š” `session.setAttribute()` ์ฝ”๋“œ ํ•œ ์ค„ ํƒ€์ดํ•‘!`joinAction.jsp`์—๋„ ์ฝ”๋“œ ๋ณต๋ถ™ํ•ด์„œ ๋„ฃ์–ด ์ค€๋‹ค.๋กœ๊ทธ์ธ ์„ฑ๊ณตํ•œ ํšŒ์›์—๊ฒŒ ์„ธ์…˜ ๋ถ€์—ฌํ•˜๊ณ  ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ๋” ํ•ด ์ค€๋‹ค. ์ด๋ ‡๊ฒŒ ์„ธ์…˜์„ ์„ค์ •ํ•ด ์ฃผ์—ˆ๋‹ค. ์„ธ์…˜์€ ํ•ด์ œ ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์œ ํšจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ• ๋‹นํ•œ ์„ธ์…˜์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ๊ทธ์•„์›ƒ ํŽ˜์ด์ง€๋„ ๋งŒ๋“ค์–ด ์ฃผ์ž. `joinAc..
์ €๋ฒˆ์— ํšŒ์›๊ฐ€์ž… ์–‘์‹ `join.jsp` ๊นŒ์ง€ ๋งŒ๋“ค์—ˆ๋‹ค. ์˜ค๋Š˜์€ userDAO ํด๋ž˜์Šค์— ํšŒ์›๊ฐ€์ž…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ด ์ค„๊ฒƒ์ด๋‹ค.DAO ํด๋ž˜์Šค๋Š” ์‹ค์ œ๋กœ DB์— ์ ‘๊ทผํ•ด์„œ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ฐ์ฒด์ด๋‹ค.๊ทธ๋ฆฌ๊ณ  ์ฒ˜๋ฆฌ๋œ ๊ฒฐ๊ณผ๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ View ์ฒ˜๋ฆฌํ•˜๋Š” `join Action.jsp` ๊นŒ์ง€ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ด๋‹ค.   ๋จผ์ € userDAO ํด๋ž˜์Šค๋กœ ๊ฐ„๋‹ค.login ๋ฉ”์„œ๋“œ ์•„๋ž˜์— join ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค.// ํšŒ์›๊ฐ€์ž… ์ฒ˜๋ฆฌ ๋กœ์ง public int join(User user) { String SQL = "INSERT INTO USER VALUES(?, ?, ?, ?, ?)"; try { psmt = conn.prepareStatem..
์ธ์ ˆ๋ฏธ์˜€๋˜๊ฒƒ
'Coding/Spring&JSP' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก
์ƒ๋‹จ์œผ๋กœ