Banner

My Tech Blog (JSP)

์˜ค๋Š˜์˜ ๋ช…์–ธ
1. ๋ฐ์ดํ„ฐ ์ „์†ก ๊ทœ์น™ 3๊ฐ€์ง€1-1. ์–ด๋””๋กœ (form ํƒœ๊ทธ์˜ action ์†์„ฑ)- ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋ชฉ์ ์ง€(servlet)๋ฅผ ์ง€์ •ํ•œ๋‹ค. - action ์†์„ฑ์— ์„œ๋ธ”๋ฆฟ URL ํŒจํ„ด์„ ์ž‘์„ฑํ•œ๋‹ค.์—ฌ๊ธฐ์„œ /MyServlet์€ ์„œ๋ธ”๋ฆฟ์˜ URL ๋งคํ•‘ ๊ฐ’์ด๋‹ค. ์„œ๋ธ”๋ฆฟ์˜ URL์€ @WebServlet์ด๋‚˜ web.xml์—์„œ ์„ค์ •๋œ๋‹ค. web.xml ๊ฒฝ๋กœWebContent/WEB-INF/web.xml ๋˜๋Š” src/main/webapp/WEB-INF/web.xml (ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ)1-2. ์–ด๋–ค ๊ฐ’์„ (input ํƒœ๊ทธ์˜ name)- input ํƒœ๊ทธ์— name ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์„œ๋ฒ„๋กœ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค. - ์„œ๋ฒ„์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๊ธฐ ์œ„ํ•ด name ์†์„ฑ์ด ํ•„์š”ํ•œ ๊ฒƒ. - Servlet ์—์„œ ๊ฐ’์„..
1. ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์ด๋ž€? URL์˜ ๋’ค์— ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐฉ๋ฒ•์ด๋‹ค. ์›น๊ฐœ๋ฐœ์—์„œ ์›นํŽ˜์ด์ง€๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ  GET๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ ์“ฐ์ธ๋‹ค. POST๋ฐฉ์‹์€ ๋ณด์•ˆ์ˆ˜์ค€์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋†’์•„์„œ URL ์— ๋„˜์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.  URL์˜ ๋์— ?๋กœ ์‹œ์ž‘ํ•˜๊ณ , ๊ทธ ๋’ค์— ํ‚ค-๊ฐ’ ์Œ์ด ์ด์–ด์ง€๋Š” ๊ตฌ์กฐ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ๊ฒ€์ƒ‰์ฟผ๋ฆฌ๋‚˜ ํ•„ํ„ฐ๋ง์— ์‚ฌ์šฉ๋œ๋‹ค.  ๋„ค์ด๋ฒ„ ๊ฒ€์ƒ‰์ฐฝ์— '๋ฑ์Šค'๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์—”ํ„ฐ ์น˜๋ฉด ์ผ์–ด๋‚˜๋Š” ์ผ โ–ผ URL ์— ?๊ฐ€ ์ƒ๊ธฐ๋ฉด์„œ ๋‚ด๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒ€์ƒ‰์–ด '๋ฑ์Šค'๊ฐ€ ๋์— ์ถ”๊ฐ€๋œ๋‹ค ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰์ฐฝ์— '์†ํฅ๋ฏผ'์„ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ์น˜๋ฉด?์•„๋ž˜์ฒ˜๋Ÿผ ์ฃผ์†Œ์ฐฝ์—์„œ url ๋’ค์— ? ์™€ ๊ฐ์ข… ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถ™๋Š”๋‹ค.2. ๊ตฌ์กฐhttps://www...
1. Cookie๋ž€?ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์— ์ €์žฅ๋˜๋Š” ํ‚ค์™€ ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐํŒŒ์ผ!์ค‘๋ณต๋˜์ง€ ์•Š๋Š” name๊ณผ value ํ•œ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง์ˆœ์„œ๊ฐ€ ์—†๋‹ค๋งŒ๋ฃŒ ๊ธฐํ•œ(๋‚˜์ด)๋ฅผ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค, ๋‹จ ์ง€์ •ํ•ด ์ฃผ์ง€ ์•Š์œผ๋ฉด Session ๊ฐ’์œผ๋กœ ์ €์žฅ๋œ๋‹ค.์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ณด๊ด€ํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋กœ, ์›น ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์ฟ ํ‚ค๋ฅผ ํ—ค๋”์— ๋‹ด์•„ ์ „์†กํ•œ๋‹ค.2. Session์ด๋ž€?Session์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ์—ฐ๊ฒฐ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์ด๋‹ค.ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ๊ณ ์œ ํ•œ Session ID๋ฅผ ์ƒ์„ฑํ•ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.ํด๋ผ์ด์–ธํŠธ๋Š” Session ID๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ URL์— ํฌํ•จํ•ด ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋ฉฐ, ์„œ๋ฒ„๋Š” ์ด ID๋กœ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•œ๋‹ค.์„ธ์…˜ ๋ฐ์ดํ„ฐ๋Š” ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ ๋˜๋Š”..
1. ์„œ๋ก ๊ทธ๋™์•ˆ ๋‚ด๊ฐ€ ์•Œ๋˜ ์ดํด๋ฆฝ์Šค์—์„œ jsp ํŒŒ์ผ์ด ๋“ค์–ด๊ฐ€๋Š” ํด๋”๋Š” /src/main/webapp ์ธ๋ฐ ๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด๋‹ค๊ฐ€ webContent๋กœ ๋˜์–ด ์žˆ๋Š” ๊ฑธ ๋ฐœ๊ฒฌํ•ด์„œ ์ฐจ์ด์ ์ด ๊ถ๊ธˆํ•ด ์ฐพ์•„๋ณด๊ฒŒ ๋๋‹ค. 2.  ๊ณตํ†ต์  WebContent์™€ /src/main/webapp๋Š” ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๊ตฌ์กฐ์—์„œ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๋Š” ํด๋”์ด๋‹ค. 3. ์ฐจ์ด์ ๊ธฐ์กด Eclipse ๋ฐฉ์‹์—์„œ๋Š” WebContent ํด๋”๊ฐ€ ์›น ๋ฆฌ์†Œ์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ํด๋”์˜€๊ณ ,์ตœ์‹  Maven/Gradle ๋ฐฉ์‹์—์„œ๋Š” /src/main/webapp๊ฐ€ ํ•ด๋‹น ์—ญํ• ์„ ๋Œ€์‹ ํ•œ๋‹ค.  Why?Maven, Gradle ๊ตฌ์กฐ์—์„œ๋Š” ์†Œ์Šค ์ฝ”๋“œ(src)์™€ ์›น ๋ฆฌ์†Œ์Šค(webapp)๊ฐ€ ๋‚˜๋‰˜์–ด์„œ /src/main ์•„๋ž˜์— ๋”ฐ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.  โ–ถ WebContent์˜ˆ์ „ ๋ฐฉ์‹์˜ Dyna..
1. ์ดํด๋ฆฝ์Šค์— ๊นƒํ—ˆ๋ธŒ ์—ฐ๋™ํ•˜๊ธฐ ์ƒ๋‹จ๋ฉ”๋‰ด [Window] - [Show View] - [Other] [Git] - [Git Repositories] - ๋งˆ์šฐ์Šค ์šฐํด๋ฆญ [Clone a Git Repository] URI: ๋‚ด ๊นƒํ—ˆ๋ธŒ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ URI (HTTP)User  & password : ๋‚ด ๊นƒํ—ˆ๋ธŒ ์•„์ด๋””์™€ ๊นƒํ† ํฐ ์ž…๋ ฅํ•˜๊ณ  [Next] - [Finish] ๊นƒํ—ˆ๋ธŒ์™€ ์—ฐ๋™ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๋งˆ์šฐ์Šค ์šฐํด๋ฆญ [Team] - [Share Project..] ํด๋ฆญ Repository: ์•„๊นŒ Git Repositories์—์„œ ๋งŒ๋“ค์–ด ๋†จ๋˜ ๊ฒฝ๋กœ๋ฅผ ํด๋ฆญ ๊ทธ๋ฆฌ๊ณ  [Finish] ์ปค๋ฐ‹ํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ ๋งˆ์šฐ์Šค ์šฐํด๋ฆญ [Team] - [Commit]  - [Unstaged Chages] ์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ ์ƒ๋‹จ [++] ์„ ..
๊พธ๋ฏธ๊ธฐ ๋ผ๊ณ  ํ•˜๊ธฐ์—๋Š” ์†Œ์†Œํ•˜์ง€๋งŒ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์†์„ฑ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„ ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ” ์•„๋ž˜ ๋ฉ”์ธ ์˜์—ญ์— ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์œผ๋กœ ์†Œ๊ฐœ๊ธ€ ์ถ”๊ฐ€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()) { ..
์ƒ๋‹จ์œผ๋กœ