Banner

My Tech Blog (ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด)

๋ธŒ๋ผ์šฐ์ € ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ์›น์‚ฌ์ดํŠธ๋‚˜ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ฐ™์€ Client๋“ค์ด ์–ด๋–ป๊ฒŒ Server์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์„๊นŒ? 1. HTTP(Hypertext Transfer Protocal)Client ์™€ Server ์ด ์–ด๋–ป๊ฒŒ Hypertext๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์„ ์ง€ ๊ทœ์•ฝํ•œ ํ”„๋กœํ† ์ฝœClient๊ฐ€ Server์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ requestํ•˜๋ฉด, Server๋Š” ๊ทธ์— ๋งž๋Š” response๋ฅผ Client๋กœ ๋ณด๋ƒ„ 2. AJAX(Asynchronous JavaScript And XML)์›นํŽ˜์ด์ง€์—์„œ ๋™์ ์œผ๋กœ ์„œ๋ฒ„์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” ๋ธŒ๋ผ์šฐ์ €API์—์„œ ์ œ๊ณตํ•˜๋Š” XMLHttpRequest(XHR) ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์žˆ๋‹ค.ํ˜น์€ fecth() API๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.  3. XMLhtm..
๊พธ๋ฏธ๊ธฐ ๋ผ๊ณ  ํ•˜๊ธฐ์—๋Š” ์†Œ์†Œํ•˜์ง€๋งŒ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์†์„ฑ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„ ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ” ์•„๋ž˜ ๋ฉ”์ธ ์˜์—ญ์— ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์œผ๋กœ ์†Œ๊ฐœ๊ธ€ ์ถ”๊ฐ€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..
CSS Diner๋Š” CSS ์„ ํƒ์ž๋ฅผ ํ•™์Šตํ•˜๊ณ  ์—ฐ์Šตํ•  ์ˆ˜ ์žˆ๋Š” ์žฌ๋ฏธ์žˆ๋Š” ์›น ๊ธฐ๋ฐ˜ ๊ฒŒ์ž„์ด๋‹ค.์‚ฌ์šฉ์ž๊ฐ€ HTML ์ฝ”๋“œ์— ์ ์šฉํ•  ์˜ฌ๋ฐ”๋ฅธ CSS ์„ ํƒ์ž๋ฅผ ์ž‘์„ฑํ•˜๋ฉด, ๊ฒŒ์ž„์˜ ๊ฐ ๋ ˆ๋ฒจ์„ ํด๋ฆฌ์–ดํ•˜๋ฉฐ ์ ์  ๋” ๋ณต์žกํ•œ ์„ ํƒ์ž๋ฅผ ์ตํž ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒŒ์ž„์€ CSS๋ฅผ ๋ฐฐ์šฐ๊ฑฐ๋‚˜ ๋ณต์Šตํ•˜๊ณ  ์‹ถ์€ ์ดˆ๋ณด์ž์™€ ์ค‘๊ธ‰์ž๋ฅผ ์œ„ํ•œ ์ข‹์€ ๋„๊ตฌ์ด๊ณ ํŠนํžˆ ์„ ํƒ์ž ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋“ค๊ป˜ ์ถ”์ฒœํ•œ๋‹ค.ํฌ๋กค๋ง ์—ฐ์Šตํ•˜์‹œ๋Š” ๋ถ„๋“ค๊ป˜๋„ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค.  https://flukeout.github.io/ CSS DinerA fun game to help you learn and practice CSS selectors.flukeout.github.io ๊ฐ€์žฅ ์‰ฌ์šด ๋‚œ์ด๋„์ธ 1๋ฒˆ๋ถ€ํ„ฐ ๊ฐ€์žฅ ์–ด๋ ค์šด 32๋ฒˆ๊นŒ์ง€ ์žˆ๋‹ค.ใ…‹ใ…‹ ํ™”๋ฉด์—์„œ ๊ณ ๋ฅด๋ผ๊ณ  ํ•˜๋Š” ๋ฌผ๊ฑด์„ ๊ณ ๋ฅด๋Š” CSS..
์ด๋ฒˆ ํฌ์ŠคํŒ… ์„ค๋ช…์€ ์ œ๊ฐ€ ์ž‘์„ฑํ–ˆ์œผ๋‚˜ ์ด๋ฏธ์ง€๋Š” ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ž˜ ๊ทธ๋ ค์ง„ ๊ฒƒ๋“ค์„ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.์ด๋ฏธ์ง€๋งˆ๋‹ค ์ถœ์ฒ˜ ํ‘œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค :)  ์—ฌ๊ธฐ ๊ฐ€์‹œ๋ฉด flex ์š”์†Œ๋“ค์„ ์ง์ ‘ ํด๋ฆญํ•ด ๋ณด๋ฉด์„œ ํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ์„ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ์–ด์š”. flex-shrink - CSS: Cascading Style Sheets | MDNThe flex-shrink CSS property sets the flex shrink factor of a flex item. If the size of all flex items is larger than the flex container, the flex items can shrink to fit according to their flex-shrink value. Each flex line's negati..
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 ๋“ฑ)๊ฐ€ ๊ธฐ๋ณธ..
์ธ์ ˆ๋ฏธ์˜€๋˜๊ฒƒ
'ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (4 Page)
์ƒ๋‹จ์œผ๋กœ