Light Purple Pointer
๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ 2 - ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ(DB)
ยท
BACKEND/Spring
MySQL์‚ฌ์šฉ-mini schema ์ƒ์„ฑ board_info ํ…Œ์ด๋ธ” ์ƒ์„ฑ AUTO_INCREMENT -- ๋ณด๋“œ์ •๋ณด ํ…Œ์ด๋ธ”(๋ฒˆํ˜ธ, ๊ฒŒ์‹œํŒ ์ด๋ฆ„) create table board_info( info_idx int AUTO_INCREMENT, -- ๊ฒŒ์‹œํŒ ์ •๋ณด ๋ฒˆํ˜ธ board_name varchar(500) not null, -- ๊ฒŒ์‹œํŒ ์ด๋ฆ„ primary key(info_idx) ); userํ…Œ์ด๋ธ” -- ์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ” create table user( user_idx int AUTO_INCREMENT, name varchar(50) not null, user_id varchar(100) not null, user_pw varchar(100) not null, primary key(user_idx) ); b..
๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ 2 - BoardController, board(read,modify,write,delete.jsp)ํŽ˜์ด์ง€ ์ƒ์„ฑ
ยท
BACKEND/Spring
BoardController package com.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/board") public class BoardController { @GetMapping("/main") public String main() { return "board/main"; } @GetMapping("/read") public String read() { r..
๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ 2 - context path, user(login,logout,modify,join.jsp)
ยท
BACKEND/Spring
์ž์œ ๊ฒŒ์‹œํŒ ์œ ๋จธ๊ฒŒ์‹œํŒ ์ •์น˜๊ฒŒ์‹œํŒ ์Šคํฌ์ธ ๊ฒŒ์‹œํŒ ํ™•์ธ์„ ์œ„ํ•ด์„œ ์ผ์‹œ์ ์œผ๋กœ modules๋ณ€๊ฒฝ ๋ฆฌ์Šคํƒ€ํŠธํ•˜๊ณ  ํ™ˆํŽ˜์ด์ง€ ๋“ค์–ด๊ฐ ์ž์œ ๊ฒŒ์‹œํŒ์— ์ปค์„œ ์˜ฌ๋ฆฌ๋ฉด ์™ผ์ชฝ ํ•˜๋‹จ์— pathํ™•์ธ๊ฐ€๋Šฅ ๋‹ค์‹œ ๊ธฐ๋ณธ ํŽ˜์ด์ง€๋กœ ๋ณ€๊ฒฝ ๋งŒ์•ฝ contextPath ๊ฐ€ ๋ฐ”๋€Œ๊ฒŒ ๋˜๋ฉด ๋ชจ๋“  ์ฃผ์†Œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํ•˜๊ฒŒ ์ ์–ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์ฃผ์†Œ๋ฅผ ๋ณ€์ˆ˜(root)๋กœ ๋งŒ๋“ค์–ด์„œ ์ €์žฅํ•ด์„œ ์‚ฌ์šฉ BoardController ์ƒ์„ฑ package com.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotati..
๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ 2 - ๊ธฐ๋ณธ ์„ค์ • ๋ฐ include(nav,footer ๋ถ„๋ฆฌ)
ยท
BACKEND/Spring
์ปจํŠธ๋กค๋Ÿฌ๋ถ€ํ„ฐ ์ƒ์„ฑ pom.xml์—์„œ ๋ฒ„์ „ ์ˆ˜์ •ํ•ด์•ผํ•จ ๋ฒ„์ „ ์ˆ˜์ • ํ›„ ๋ฉ”์ด๋ธ ์—…๋ฐ์ดํŠธ - ๋ฒ„์ „ 11๋ณ€๊ฒฝ ํ™•์ธ ์™„๋ฃŒ 3 HomeController ์ˆ˜์ • package com.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home";///WEB-INF/views/๊ฐ€ ์ƒ๋žต๋˜์–ด์žˆ๋Š”๊ฑฐ์ž„ } } servlet-context.xml์— ๊ฒฝ๋กœ ์ž‘์„ฑ๋˜์–ด์žˆ์Œ. home.jsp UTF-8์„ค์ • ๊ฐ€..
๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ 2 - MVC์˜ ๊ตฌ์กฐ
ยท
BACKEND/Spring
controller, service, repository : ํŠน์ˆ˜ ํด๋ž˜์Šค https://kkminseok.github.io/posts/Spring_semina/ Spring DAO๋ž€?, DTO๋ž€?, VO๋ž€?, DTO vs VO, DTO vs Domain, DAO vs Repository ๊ท€์—ผ๋‘ฅ์ด ํ›„๋ฐฐ๋“ค๊ณผ ์Šคํ„ฐ๋””๋ฅผ ํ•˜๋ฉด์„œ ์„ธ๋ฏธ๋‚˜๋ฅผ ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. kkminseok.github.io
๋‚ด ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ - ๊ธฐ๋ณธ ์„ค์ • /DB์—ฐ๊ฒฐ
ยท
BACKEND/Spring
์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ - my_board pom_xml์—์„œ ๋ฒ„์ „ ์ˆ˜์ • ํ•„์š” ์‚ฌ์šฉ ๋ฒ„์ „ web_xml ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ ํ•„ํ„ฐ ์„ค์ • ์ถ”๊ฐ€ home.jsp์— UTF-8 ์ถ”๊ฐ€ํ•จ. DB์—ฐ๊ฒฐ - ํ…Œ์ด๋ธ” ์ƒ์„ฑ ํ•„์š”ํ•œ ํ…Œ์ด๋ธ” board, user,reply ์„ธ ๊ฐœ CREATE TABLE board( bno int not null auto_increment, title varchar(50) not null, id varchar(50) not null, content text not null, regDate timestamp not null default now(), viewCnt int default 0, primary key(bno), FOREIGN KEY(id) REFERENCES user(id) ); CREATE TABLE..
๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ - ๋Œ“๊ธ€ ์‚ญ์ œํ•˜๊ธฐ
ยท
BACKEND/Spring
replyMapper.xml ์‚ญ์ œ ์ฟผ๋ฆฌ๋ฌธ ์ถ”๊ฐ€ - ์ด๋ฏธ ์ž‘์„ฑ๋˜์–ด์žˆ์Œ. delete from tbl_reply where rno = #{rno} and bno = ${bno} ReplyDAO // ๋Œ“๊ธ€ ์‚ญ์ œ public void delete(ReplyVO vo) throws Exception; ReplyDAOImple //๋Œ“๊ธ€ ์‚ญ์ œ @Override public void delete(ReplyVO vo) throws Exception { sqlTemplate.delete("reply.replyDelete", vo); } ReplyService // ๋Œ“๊ธ€ ์‚ญ์ œ public void delete(ReplyVO vo) throws Exception; ReplyServiceImple //๋Œ“๊ธ€ ์‚ญ์ œ @Overrid..
๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ - ๋Œ“๊ธ€ ์ˆ˜์ •ํ•˜๊ธฐ
ยท
BACKEND/Spring
view.jsp ์ˆ˜์ •, ์‚ญ์ œ ๋งํฌ ์ถ”๊ฐ€ ${reply.writer}/ ${reply.content} ์ˆ˜์ •/์‚ญ์ œ ๋Œ“๊ธ€ ์ˆ˜์ • ๋งํฌ ํด๋ฆญํ•˜๋ฉด ์ด๋™ํ•  ํŽ˜์ด์ง€ ๋งŒ๋“ค์–ด์•ผํ•จ views -> reply ํด๋” ์ƒ์„ฑ view.jsp ๋ณต์‚ฌํ•ด์„œ modify.jsp๋กœ ์ˆ˜์ •ํ•œ๋‹ค. ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ๋Œ“๊ธ€ ์ˆ˜์ • replyMapper.xml select rno, bno, writer, content, regDate from tbl_reply where bno = #{bno} and rno = #{rno} ReplyDAO // ๋‹จ์ผ ๋Œ“๊ธ€ ์กฐํšŒ public ReplyVO replySelect(ReplyVO vo) throws Exception; ReplyDAOImple // ๋‹จ์ผ ๋Œ“๊ธ€ ์กฐํšŒ @Override public ReplyVO repl..
๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ - ๋Œ“๊ธ€ ์ž‘์„ฑ(write)
ยท
BACKEND/Spring
view.jsp ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ๋Œ“๊ธ€ ์ž‘์„ฑ submit์œผ๋กœ ํ•ด์•ผ POST๋กœ ์ด๋™ ReplyController // ๋Œ“๊ธ€ ์ž‘์„ฑ @PostMapping("/write") public String posttWrite(ReplyVO vo) throws Exception { replyService.write(vo); return "redirect:/board/view?bno=" + vo.getBno(); } ReplyController๋ฅผ ๋งŒ๋“ค์—ˆ์„๋•Œ, ์ปจํŠธ๋กค๋Ÿฌ ์ž์ฒด๋ฅผ /reply๋กœ ๋งคํ•‘ํ–ˆ์œผ๋ฏ€๋กœ, ์ด ๋Œ“๊ธ€ ์ž‘์„ฑ ๋ฉ”์„œ๋“œ์— ์ ์šฉ๋˜๋Š” ์‹ค์ œ url์€ /reply/write ์ž…๋‹ˆ๋‹ค. return์€ redirect:/board/view?bno= ๋กœ ๋˜์–ด์žˆ์–ด์„œ, ๋Œ“๊ธ€์„ ์ž‘์„ฑํ–ˆ๋˜ ๊ฒŒ์‹œ๋ฌผ๋กœ ๋‹ค์‹œ ์ด๋™๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋Š” 1. ..
๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ - ๋Œ“๊ธ€ DB์— ํ…Œ์ด๋ธ” ์ถ”๊ฐ€, ๊ฒŒ์‹œ๊ธ€ ๋Œ“๊ธ€ ์กฐํšŒ
ยท
BACKEND/Spring
view.jsp ํ•˜๋‹จ์— ๋Œ“๊ธ€ html ์ฝ”๋“œ ์ถ”๊ฐ€ ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ ์ฒซ๋ฒˆ์งธ ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ์ฒซ๋ฒˆ์งธ ๋Œ“๊ธ€ ๋‘๋ฒˆ์งธ ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ๋‘๋ฒˆ์งธ ๋Œ“๊ธ€ ์„ธ๋ฒˆ์งธ ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ์„ธ๋ฒˆ์งธ ๋Œ“๊ธ€ ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ๋Œ“๊ธ€ ์ž‘์„ฑ MySQL์—์„œ ํ…Œ์ด๋ธ” ์ถ”๊ฐ€ํ•จ CREATE TABLE tbl_reply ( rno int not null auto_increment, bno int not null, writer varchar(30) not null, content text not null, regDate timestamp not null default now(), PRIMARY KEY(rno, bno), FOREIGN KEY(bno) REFERENCES tbl_board(bno) ); select * from tbl_reply; ๋Œ“๊ธ€์€ ๊ฒŒ์‹œ๊ธ€์˜ ๋Œ“..
ใ„ด