Preference ํญ์์ ์คํํด์ผํ ๊ฒ๋ค
1.์๋ฐ ์ค์น ํ์ธ

2. tomcat ์๋ฒ ์ฐ๊ฒฐ ์ํ ํ์ธ
edit์ ํตํด ์ค์ ์ค์น๋ ๋๋ ํ ๋ฆฌ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค


3.์๋ maven ์ ๋ณ๋์ ํ๋ก๊ทธ๋จ์ด๋ค
Apache Maven ์ ์๋ฐ์ฉ ํ๋ก์ ํธ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ์ ๋๋ค. ์๋๋ Maven์ด ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค. ์ดํด๋ฆฝ์ค๋ ๋ณ๋์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ ํ์์์ด ๋ฐ๋ก ์คํ๊ฐ๋ฅํ๋๋ก maven(๋ฉ์ด๋ธ)์ ํฌํจํ๊ณ ์์ต๋๋ค.
maven์ ๋ฌด์์ ํ๋๊ฐ? ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ๊ฒ์์๋ถํฐ ์ต์ข ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ ๋ฐ์ ์ธ ๋ฐฐ์น(deploy)๊น์ง์ ์์ ์ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ค.
Spring(์คํ๋ง)์์ pom.xml ์ผ๋ก์ ์๋ฐ ํ๋ก์ ํธ ๋น๋๋ฅผ ์๋ํํด์ฃผ๋ ๋น๋ ํด์ ๋๋ค.
ํผ ํ์ผ์ ์ค์ ์ ํ๋ฉด, ์ด๊ฒ์ ์ํด ๊ด๋ฆฌ๊ฐ ์ด๋ค์ง๋๋ค.

์คํ๋ง์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๋ณด๋ฉด, ๋ง์ API๋ฅผ ํ์ฉํ๊ฒ ๋ฉ๋๋ค.
settings.xml ํ์ผ์ ์์ ํ๋ฉด, ๊ฒฝ๋ก๋ค์ด ๋ณ๊ฒฝ์ด ๋๋ ๊ฒ์ธ๋ฐ, ์ด๋
local repository ๊ฐ ์์ ์ด ๋๋ ๊ฒ์ด๋ฏ๋ก, ๋ก์ปฌ์ ๊ฑด๋๋ฆฌ๋ ๊ฒ์ด ์๋๋๋ค.




spring์ web erp๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ ์ฌ์ฉํฉ๋๋ค.
MVC ํ๋ก์ ํธ๋ฅผ ์ต์ข ์ ์ผ๋ก ๊ตฌ์ถํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ๋จ์ Spring MVC Project๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฅ์ ์ MVC์ ๋ํ ํ๋ ์ ํ์ด ์๋์ผ๋ก ์์ด์ ํ์ฉํ๋ฉด ๋ฉ๋๋ค.
ํด๋ฆญ์ ํ๋ฉด, ๊ด๋ จ๋ API๊ฐ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์, ๋ค์ด๋ก๋ํด์ผ ํ๋ค๋ ์๋ ๋ฉ์์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.

์ดํ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์์ง๊ฐ ์์ฑ๋ฉ๋๋ค

ํจํค์ง๊ฐ 1,2,3 ๋จ๊ณ๋ก ํ์ฑ๋ฉ๋๋ค.
ํจํค์ง ์ด๋ฆ์ ์์ฑํ ๋ ์ค๋ณตํ๋ฉด ์๋ฉ๋๋ค.
๋ณดํต ์ค๋ฌด์์๋ ํจํค์ง๋ฅผ ํ์ฌ ์ด๋ฆ ๋๋ฉ์ธ์ ์์ฑํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ฅ์ด๋ผ๋ ์ฑ๊ฒฉ์ ์๋ฏธํ๋ ๊ธ์ ์์ฑํฉ๋๋ค
์์คํ๋ฆฌํฌ(*) ์ด๊ฒ์ ๋ฌด์์ ์๋ฏธํ ๊น์?
ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋, ํ๋ก์ ํธ์ ์ ๊ทผํ๋ ค๋ฉด, context path๊ฐ ๋ง๋ค์ด์ ธ์ผ ํฉ๋๋ค.
/m ์ผ๋ก ์์ฒญ์ ํด์ผ context path ๋ฅผ ํตํด ํ๋ก์ ํธ์ ์ ๊ทผ์ด ๋๋๋ฐ,
ํจํค์ง์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ง์ง๋ง์ ์ค๋ ๋จ์ด๊ฐ ํ๋ก์ ํธ์ ์ ๊ทผํ๋ ๋ช ๋ น์ด๊ฐ ๋ฉ๋๋ค.
์ฃผ์ํ์ค ์ ์ ์ฐ๋ฆฌ๊ฐ ์ด๋ฉ์ผ์ ์์ฑํ ๋ @์ com์ ์ ์์น์ ์์ฑํด์ค์ผ ํ๋ฏ์ด, ํจํค์ง ์ด๋ฆ๋ ๊ท์น์ด ์กด์ฌํฉ๋๋ค. ์ด๊ฒ์ ์ ๊ท ํํ์(regular expression) ์ด๋ผ๊ณ ํฉ๋๋ค. ๋ณดํต ์ ๊ท ํํ์์ ์ด์ฉํด ๋ถ์ฉ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋๋ฐ ์ฌ์ฉ๋์ด ์ง๊ธฐ๋ ํฉ๋๋ค.

kr.board ๋ก ์์ฑํ์๋ ๋ค์๊ณผ ๊ฐ์ด ํจํค์ง ์์ฑ์ ์๋ฌ๊ฐ ์๊ฒผ์ต๋๋ค. ๋์๋ฆฌ๋ก ์์ฑ์ ํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ์ต๋๋ค.
kr.board.web
์ฌ๊ธฐ์ web์ /m ์ context path์ ๊ฐ์ ์ญํ ์ ์ํํ๊ฒ ๋ฉ๋๋ค.
์๋ฃ ๋ฒํผ์ ํด๋ฆญํ๊ฒ ๋๋ฉด ๋ค์ด๋ก๋ ํ์๋ฅผ ๋ณผ ์ ์์ต๋๋ค.

์ด ํ์ผ๋ค์ ๋ก์ปฌ ๋ ํฌ์งํ ๋ฆฌ์ ๊ธฐ์กด์ ์๋ ๊ฒ ์ด์ธ์ ์ถ๊ฐ๋ก ์ค์น๊ฐ ๋ฉ๋๋ค.

ํ์ผ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค

์๋ฐ ๋จ์์ m, c ์ ์ญํ ์ ์ํํ๋ ํ์ผ๋ค์ ์์ฑํฉ๋๋ค
src์ web app์์๋ ๋ทฐ์์๋ค์ html,css,jsp๋ฅผ ์์ฑํ๊ฒ ๋ฉ๋๋ค

resource๋ css, image ๊ฐ์ ํ์ผ๋ค์ , java script๋ ์ธ๋ถ์ .js๋ก ๋ง๋ค์ด ๋๊ณ resources์ ๋ฃ๊ฒ ๋ฉ๋๋ค.

web-inf ์ home.jsp๋ผ๊ณ ํด์ jsp๊ฐ web-app์์ ์๋ ๊ฒ์ด ์๋๋ผ, web-inf ์ ์กด์ฌํ๊ฒ ๋ฉ๋๋ค.
์ ๊ทธ๋ด๊น์?

jsp ํ์ผ์์๋ ๋ค์๊ณผ ๊ฐ์ด JSTL ๊ณผ EL ์ด ์์ต๋๋ค.

์ฌ๊ธฐ์ CONTROL๋ SAMPLE์ ์์นํด์์ต๋๋ค

hello world ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๋๋ค.
client๋ hello world ์ถ๋ ฅ๋ง ์๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง ์ด๋ค ์์ฒญ์ด ์ด๋ป๊ฒ ์ฒ๋ฆฌ๊ฐ ๋๋์ง ํ์ธํ๊ธฐ ์ํด์ m์๊ฒ ๋ณด๋ด์ view๋จ์์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๊ฐ ๋๊ณ c๋จ์์๋ ์ด๋ค ์์ผ๋ก ์งํ์ด ๋๋์ง ํฐ ํ์ ์ดํดํ์ ์ผ ํฉ๋๋ค.
JAVA Resources ๋ controller๊ฐ ์กด์ฌํ์ฌ, home.jsp์ ์ํฅ์ ์ฃผ๊ฒ ๋ฉ๋๋ค.

controller ๋จ์์๋

webapp๋ root๋ก ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
return ๊ฐ์ผ๋ก๋ return "/web-inf/views/home.jsp";(๋ฌผ๋ฆฌ์ ์ธ ๊ฒฝ๋ก) ๋ผ๊ณ ์ ์ง ์๊ณ
์ ์ง๋ณด์๊ฐ ์ด๋ ค์ด ์ฝ๋์ ๋๋ค.
Spring ์์๋ ์์ ๊ธ์ /web-inf/views/ ๋ฅผ ๋ผ์ด๋ด๊ณ home ์ด๋ผ๋ ํ์ผ ๋ช ๋ง ์ ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.

spring์ appServlet์ ๋ณด๊ฒ ๋๋ฉด, ๋ค์๊ณผ ๊ฐ์ด prefix(์ ๋์ฌ) , suffix(์ ๋ฏธ์ฌ) ์ ๋ค์๊ณผ ๊ฐ์ด ํ์ผ๋ค์ด ์ฝ๋ฉ๋์ด์ ธ์์๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ตณ์ด ๊ธธ๊ฒ ์ ์ด์ค ํ์๊ฐ ์์ต๋๋ค.
์ด๋ ์ ์ง๋ณด์๊ฐ ํธํด์ง๋ ๋ฐฉ๋ฒ์ ๋๋ค.

์ฆ, controller๋ jsp ๊ฒฝ๋ก๋ฅผ returnํ๋๋ฐ ํ์ผ ์ ์ฒด์ ๋ฌผ๋ฆฌ์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ ์ด์ค ํ์๊ฐ ์์ต๋๋ค. ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌ๋์ด์ง๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ฉด, Tomcat ์๋ฒ์ add ๋ฅผ ์์ผ์ผ /web ์ผ๋ก ๋ฑ๋ก์ด ๋์ด์ง๋๋ค.
add ํ๋ ๋ฐฉ๋ฒ์ 3๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ฒซ๋ฒ์จฐ๋, tomcat ์๋ฒ์ ์ค๋ฅธ์ชฝ ๋ฒํผ ํด๋ฆญ -> add and remove ๋ฅผ ํด๋ฆญํ๋ ๋ฐฉ์์ ๋๋ค.
๋๋ฒ์จฐ๋, SpringMVC01์ ํ๋จ์ Tomcat v8.5 Server at localhost ์ ๋๋๊ทธํ์ฌ ๋ฃ์ต๋๋ค.
์ธ๋ฒ์จฐ๋, Tomcat ์๋ฒ๋ฅผ ํ๋จ์์ ๋๋ธํด๋ฆญํ์ฌ overview๋ฅผ ์ฝ๋๋ค. ๊ธฐ๋ณธ์ ์ธ port ๋ฒํธ๋ 8080 ์ ๋๋ค. ์ด๋ฏธ ์ฌ์ฉ๋์ด ์ง๊ณ ์๋ ์๋ฒ๋ oracle์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ด๋ถ์์ 8080 ํฌํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์, ์ถฉ๋์ด ๋๊ธฐ ๋๋ฌธ์, ํฌํธ๋ฅผ ๋ฐ๊ฟ์ค์ผ ํฉ๋๋ค.
์ฒซ๋ฒ์จฐ ๋ฐฉ๋ฒ์ ๋๋ค.



์๋จ์ server ํด๋์์
์ฆ, /web ์ผ๋ก ์์ผ ์ฐ๋ฆฌ์ kr.board.web ์ SpringMVC01 ์ด ์คํ๋์ด์ง๊ฒ ๋ฉ๋๋ค.


์ฃผ์๋ฅผ ์ ๋ ฅํ ๋, ๋ง์ง๋ง์ / ๋ฃ์ด์ผํ๋ค
์คํํ ๋ jsp ์คํX
controller๋ก ๋๊ฒจ์ค์ผ ์คํ์ด ๊ฐ๋ฅํ๋ค

requestmapping์์ / ์ด ์์ผ ์คํ์ด ์ ์๋ฃ๋ฉ๋๋ค
์น์์
http://localhost:8081/web/
๊ฒ์
4.3.14 ๋ฒ์ ๋ณ๊ฒฝํด์ฃผ๊ธฐ - ํผํ์ผ์์
mvn repository ์ฌ์ดํธ์์ spring web mvc ์์ ๋ฒ์ ์ ํ์ธํ์

countring ์๊ฐ ๋์ผ๋ ๋ง์ด ์ป์ ๊ฒ์ผ๋ก ํ๋จํ์ฌ, ๋ค์ด๋ก๋ ๋ฐ์ต๋๋ค

jar ํ์ผ๋ก mvn ๋ ํฌ์งํ ๋ฆฌ ์ฌ์ดํธ์์ ๋ฐ์์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ 1.6์ด ์๋ 1.8๋ก ์ ๋ฐ์ดํธํด์ค๋ค. ์ด๋ ๋ฐ๋ก JRE Sysytem Library ๊ฐ์ ๊ฒฝ์ฐ ๋ฒ์ ์ด ๋ณ๊ฒฝ๋๊ฒ ๋ณด์ด์ง ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ๋ฐ์ดํธ๋ฅผ ํด์ค์ผ ํฉ๋๋ค.

์ ๋ฐ์ดํธ๋ฅผ ์ํํฉ๋๋ค.

์ ๋ฐ์ดํธ๋ ๊ฐ์ ์ฑ์ด ์์ด์ผ ์ข์ต๋๋ค. ์ฒดํฌํ์๋ฅผ ํด์ค๋๋ค.

๋ชจ๋ ์ปดํ์ผ๋ฌ๊ฐ 1.6 ๋ฒ์ ์์ 1.8๋ก ๋ณ๊ฒฝ์ด ๋ฉ๋๋ค.
๋ค์ ์ด์ด๋ณด๋ฉด, ๋ฒ์ ์ด ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.

[์ค์โ โ ] ์ด ๊ณผ์ ์ ๋๋ฒ ๋ฐ๋ณตํด์ค์ผ ์ ๋ฐ์ดํธ๊ฐ ์๋ฒฝํ๊ฒ ์ํ๋ฉ๋๋ค.

์ํ์ ์์
๊ณ ๊ฐ - ๊ฒฝ๋น์ - ์๋ด์
๊ฒฝ๋น๋ Controller
์๋ด์ - view- jsp
ํ ์๋ฒ์ง, ํ ๋จธ๋ - ๊ฒฝ๋น๋ฅผ ๊ฑฐ์น์ง ์๊ณ , ๋ฐ๋ก view๋จ์ธ ์๋ด์์ ๋ง๋ ์ ์์ต๋๋ค.
๊ฒฝ๋น๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก View ๋จ์ผ๋ก ๊ฐ๊ฒ ๋๋ค๋ฉด, ๊ธฐ์กด์ ๊ธฐ๋ค๋ฆฌ๋ ๊ณ ๊ฐ๋ค์ด๋ ํผ์ , ์ ๋ฌด์ ๋ง์ฐฐ์ด ์๊น๋๋ค.
๊ณ ๊ฐ์ ๊ฒฝ๋น๋ฅผ ๊ฑฐ์ณ์ view ๋จ์ผ๋ก ๊ฐ๊ฒ ํ๋ ๊ฒ์ ๊ท์น์ ์ ํด์ผํฉ๋๋ค.
์ฌ๊ธฐ์ ๊ฒฝ๋น๋ partition ์ ํ์ฑํด์,
web-inf ์๋์ jsp ๋ฃ๋ ์ด์ : client๊ฐ ๋ฐ๋ก jsp๋ก ๊ฐ๋ ๊ฒ์ ์์ฒ์ ์ผ๋ก ๋ง์ผ๋ ค๊ณ ์กด์ฌํฉ๋๋ค.
mvc๋ ํด๋ผ์ด์ธํธ๊ฐ controller ์๊ฒ ์์ฒญ์ ํด์ jsp์ ์ ๊ทผ์ ํ๋ ๊ฒ์ ๋๋ค.
controller ๊ฐ jsp๋ก ํฌ์๋ฉ์ ํด์ ์์ ์ด ์ํ๋ฉ๋๋ค.
์์ ํ์ด์ง๋ view ํด๋๊ฐ ์๋ webapp ์๋์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
ํ์ผ์ index.jsp ๋ผ๊ณ ๋ง๋ญ๋๋ค.
boardList.jsp๋ views ํด๋์๋์ ์์ฑ ํด์ค๋๋ค.


์ฃผ์
๋์๋ฌธ์ ๋ฐ๊พธ๋ ๊ฒ ๊ธ์ง.
๋ฐ๊พธ๋ ค๋ฉด, ์ญ์ ํ๋ค๊ฐ ๋ค์ ์์ํ ๊ฒ
๊ฒ์ํ ๋ฆฌ์คํธ ํ์ผ ์์ฑ
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


์ฌ๊ธฐ์ ์ผ๋ถ ์ฝ๋ ์์

๊ฒ์ํ ๊ธฐ๋ณธ ํ/ํ ํ๋ฆฟ์ ๋๋ค. ๋ณ๊ฒฝ์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.

๋ณต์ฌํ์ฌ, ๋ถ์ฌ๋ฃ์ต๋๋ค.


ํ์ผ์ ๋๊ฐ์ด ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ต๋๋ค
board.jsp ๋ผ๊ณ ๋์ต๋๋ค
์ด๋ ๊ฒ ๋ง๋ค์ด ๋๋ ์ด์ ๋ ํฐ ํ์ ๊ฐ์๋ฐ, ๋ค๋ฅธ ํ์ด์ง์์ ํ์ฉํ๊ธฐ ์ํด์์ ๋๋ค.

jsp ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํฉ๋๋ค.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h2>Spring MVC</h2>
<div class="panel panel-default">
<div class="panel-heading">BOARD LIST</div>
<div class="panel-body">
<!-- ์ฌ๊ธฐ์ ๊ฒ์ํ ๋ฆฌ์คํธ ์ถ๋ ฅ -->
<table class="table">
<tr>
<td>๋ฒํธ</td>
<td>์ ๋ชฉ</td>
<td>์์ฑ์</td>
<td>์์ฑ์ผ</td>
<td>์กฐํ์</td>
</tr>
<tr>
<td>1</td>
<td>๊ฒ์ํ ๋ง๋ค๊ธฐ</td>
<td>๊ด๋ฆฌ์</td>
<td>2021-11-17</td>
<td>0</td>
</tr>
</table>
</div>
<div class="panel-footer">SQL ์๊ฒฉ๊ฒ์ ์ค์ ๋ฌธ์ </div>
</div>
</div>
</body>
</html>
jsp ํ์ผ์ ๋ฐ๋ก ์คํํ ์๊ฐ ์์ต๋๋ค![์ค์โ ]

web-inf ํด๋ ์๋์ ์๊ธฐ ๋๋ฌธ์, ์๊น ์ํ์ ์์์ฒ๋ผ ๋ฐ๋ฆฌ์ผ์ด๋(ํํฐ์ )์ด ์์ด์ ๋์ด๊ฐ์ง ์์ต๋๋ค.
C ๋ฅผ ์ด๋ป๊ฒ ๋ง๋๋์ ๋ฐ๋ผ ํจ์จ์ด ๋ฌ๋ผ์ง๋๋ค.

pojo : ์ผ๋ฐ ํด๋์ค๋ก์, Plain Old Java Object, ๊ฐ๋จํ POJO๋ ๋ง ๊ทธ๋๋ก ํด์์ ํ๋ฉด ์ค๋๋ ๋ฐฉ์์ ๊ฐ๋จํ ์๋ฐ ์ค๋ธ์ ํธ๋ผ๋ ๋ง๋ก์ Java EE ๋ฑ์ ์ค๋ framework๋ค์ ์ฌ์ฉํ๊ฒ ๋๋ฉด์, ํด๋น ํ๋ ์์ํฌ์ ์ข ์๋ ๋ฌด๊ฑฐ์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ฒ ๋ ๊ฒ์ ๋ฐ๋ฐํด์ ์ฌ์ฉ๋๊ฒ ๋ ์ฉ์ด์ ๋๋ค
FrontController๊ฐ ํด์ผํ ์ผ์ ๋์ ํด์ฃผ๋ ์ญํ ์ ์ํํ๋ ๊ฒ์ด POJO ์ ๋๋ค.
์๋ฐ์์ธ POJO๋ ๋ง์ ์ ๋ฌด๋ค์ ์ํํ๊ฒ ๋ฉ๋๋ค.
๋๋ง์ ์ผ์ ์ํํ๋ฉฐ, FrontController๋ ์ค๊ฐ์ ~์ด๋๋ก ๊ฐ์ธ์ ๊ฐ๋ฒผ์ด ์ผ๋ค์ ์ง๋ ๊ด๋ฆฌํ๋ ์ญํ ์ ์ํํฉ๋๋ค.
POJO๋ ๊ฐ์ ๋งก์ ์ผ๋ค์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ์ ์ฌ๋ฌ ๊ฐ๋ก ๋๋ฉ๋๋ค. ํ ๋ช ์ด ๋ง์ ์ผ์ ํ๋ฉด, ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์, ๊ฐ ์ ํ ๋ช ์ ๋ฐ์ด์ฒดํฌ/qr ์ฒดํฌ๋ฅผ ์ํํ๊ณ , ํ๋ช ์ ๋๊ธฐํ๋ฅผ ๋ฐํํ๊ณ , ํ๋ช ์ ์ฒญ์๋ฅผ ํ๋ ๋ฑ์ ์ผ๋ค์ ์ํํฉ๋๋ค.
๊ฐ์์ ์ญํ ์ ๋ฐ๋ผ Controller ์ด๋ฆ์ด ๋ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค.

์๋ด์์ ์ด๋ฏธ ๋ง๋ค์ด์ ธ ์์ต๋๋ค. (๋ ธ๋์ ๋ถ๋ถ)
web.xml ์ ๋ฐฐ์น ์์ ์์ ๋๋ค.

ํ์ผ์ ์ด์ด๋ณด๋ฉด, DispatcherServlet ์ด๋ผ๊ณ ์ด๋ฏธ ๋ง๋ค์ด์ ธ ์๋๋ฐ, ์ด๊ฒ์ด ๋ฐ๋ก FrontController์ ๋๋ค.

์์น๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.


์ ์ฒด ํ๋ฆ๋๋ ๋ค์๊ณผ ๊ฐ์ด ๋ํ๋ผ ์ ์์ต๋๋ค.

dispatcher ์์ ๊ฐ ์ handler mapping์์ ๊ฐ ๊ธฐ๋ฅ(๊ฒ์ํ, ๋ก๊ทธ์ธ ์ฒ๋ฆฌ ๋ฑ์ ๊ธฐ๋ฅ์ ์ํํ๋ ์ปจํธ๋กค๋ฌ๋ค์ด๋ ๋งพใ ํ๋ ์ญํ ์ ์ํํฉ๋๋ค)
์ฐ๋ฆฌ๋ ์ด๋ฏธ Front Controller ๋ง๋ค์ด์ ธ ์๊ธฐ ๋๋ฌธ์, POJO๋ฅผ ์์ฑํด์ผํฉ๋๋ค.

ํฌ์กฐ๋ง๋ค๊ธฐ(์ปจํธ๋กค๋ฌ)
-์๋ธ๋ ์ด ์๋ , class ๋ก ๋ง๋ค์ด์ค์ผํฉ๋๋ค
-์๋ฐ๋ฆฌ์์ค-kr.board.web ์์ ์ฐํด๋ฆญํฉ๋๋ค

์ฌ๊ธฐ์ ๋ค์๊ณผ ๊ฐ์ด ์ทจํ๋ ํ๋์ ๋ฐ๋ผ ๋ช ๋ช ์ ํด์ค๋๋ค.( ์>์ก์ ..๋ฑ)
์ ๋ BoardController๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ ๋ค์๊ณผ ๊ฐ์ด ๋ช ๋ช ํด์ฃผ์์ต๋๋ค.
BoardController


ํธ๋ค๋ฌ ๋งคํ(Handler Mapping) ์ ๊ฐ๋
์ฌ์ฉ์๊ฐ http://127.0.0.1:8081/web/boardList.do ์ด๋ฌํ ์์ฒญ์ ์ฃผ๋ฉด C ๋ก ๋ฐ์๋ค์ฌ boardList() { } ์ ์ํํ๋ ์์ ์ ๋งค์นญํ๋ ๊ฒ์ ๋๋ค.

** ctrl + space๋ก ๋ถ๋ฌ์ค๊ธฐ ( Controller) , ์๋์ผ๋ก import ๋ฉ๋๋ค. [๊ธฐ๋ณธ ๊ฐ๋ ์ค์: โ ]
Mapping ์์ฒญ์ ์ ์ฒด ํ๋ฆ๋

๊ฒ์ํ ๋ฆฌ์คํธ ๊ฐ์ ธ์ค๊ธฐ
requestMapping ์ด๋ผ๋ ์ด๋ ธํ ์ด์ ์ ๊ฑธ๊ณ , ๊ฐ์ ธ์ต๋๋ค. - ์ ์ฒ๋ฆฌ ๋ผ๊ณ ํฉ๋๋ค
*์ ์ฒ๋ฆฌ : ๋ฐ์ดํฐ ๊ฐ๋ค ์ค์ ์ด์ํ ๊ฐ๋ค์ ๋บด๊ฑฐ๋ ๋ฃ๊ฑฐ๋ ๋ ์ค ํ๋,
์๋ฐ์์๋ ์ด๋ฌํ ์์ฒญ์ด ๋ค์ด์ค๋ฉด, ์ด๋ ํ ๋ฉ์๋๊ฐ ์์ด์ผ ํ๋์ง๋ฅผ ์ฐ๊ฒฐํด์ค๋๋ค.
Handler Mapping ๋ง๋ค๊ธฐ
๋ณดํต MVC ๊ฐ๋ฐ์ ํ๋ค๊ณ ํ๋ฉด, Controller๋ฅผ ์ค๊ณํ๋ ๊ฒ์ ๋๋ค.
๊ฐ๋ฐ์๊ฐ ๊ตฌํํด์ผํ๋ ๋ถ๋ถ์ด Controller ์ ๋๋ค(๋ณด๋ผ์)
ํ๋์์ Spring์ ์ํด์ ์์ฑ์ด ๋๋ ๋ถ๋ถ์ ๋๋ค.
View๋ ๊ฐ๋ฐ์๊ฐ ๊ตฌํํ ์๋ ์๊ณ , Spring์์ ์ ๊ณตํด์ค ์๋ ์์ต๋๋ค.

์๋ฅผ๋ค์ด, json ํ์์ผ๋ก ์๋ฃ๋ฅผ ์์ฒญ๋ฐ์ผ๋ฉด, web์์๋ view๊ฐ ํ์์์ต๋๋ค. ํ์ง๋ง, ๋ค๋ฅธ ํ์์ด๋ฉด jsp๋ฑ์ ๊ตฌํ์ด ํ์ํฉ๋๋ค.

์ฌ๊ธฐ์ ํด๋ณผ ๊ฒ์ ๋ณด๋ผ์์ Service ์์ด Controller ์ Repository ๋ฅผ ์ฐ๊ฒฐํ๋ ค ํฉ๋๋ค.
์์ผ๋ก ์์ฑํด์ผ ํ ๊ฒ์ Model์ ๋๋ค. ์๋ํ๋ฉด ๋๋ฌด ๋ง์ ์ผ๋ค์ ๊ฐ POJO๊ฐ ์ฒ๋ฆฌํ๊ธฐ์๋ ๋๋ฌด ๋ง๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ณ์ธต(Layer 1 2 3)
3 ๊ฐ์ง ๊ณ์ธต์ผ๋ก ์ค๊ณ๋๋ฉด, ๋ณต์กํ๊ธด ํ์ง๋ง, ๋์ค์ ํธํด์ง๋๋ค.
๋ณต์กํ๋ฉด, ์ ์ง๋ณด์๊ฐ ํธํด์ง๋๋ค. ์๋ํ๋ฉด, ํน์ ์ผ์ ์ํํ๋ ์ญํ ์ด ๋งก์ ๋ถ๋ถ๋ง ๋ณ๊ฒฝํ๊ณ ์์ ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง, ๋ง์ฝ์ ์ญํ ์ด ๋๋ ์ง์ง ์์์ผ๋ฉด ๊ฑด๋๋ ค์ผ ํ๋ ๋ถ๋ถ์ด ๊ทธ๋งํผ ๋ง์์ง๋ ๊ฒ์ ์๋ฏธํ๊ฒ ๋ฉ๋๋ค.
Dispatcher ๋ถ๋ถ์ด 1 layer ์ด๋ฉฐ, Controller ๋ถ๋ถ์ 2 layer์ด๋ฉฐ, Repository ๋ถ๋ถ์ 3 Layer ์ ๋๋ค.
Dao ์์ฑ
src/main/java ๋ถ๋ถ์์ new - package- kr.board.dao ๋ผ๊ณ ์์ฑํด์ค๋๋ค.

๋ง๋ dao ํจํค์ง์์ class ๋ฅผ ์์ฑํฉ๋๋ค.

๋ฆฌ์คํธ๋ ์๋ฐ ์ ํธ

boardDAO



getters and setters ๋ฅผ ์ค์ ํด์ค๋๋ค.

์ class ๋ฅผ interface๋ก ๋ณ๊ฒฝํด์ฃผ๋ ๊ฒ์ผ๊น?

์ด๊ฒ์ ์ด๋ ๊ฒ ๋ฐ๊ฟ์ค๋๋ค.

BoardController - ์น ํ๋จ์ class ๋ง์ง๊ธฐ



'๐๏ธ์ํํธ์จ์ด > ๐java & Servlete & JSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ (๋์ด๋ ์คํ) (0) | 2022.03.18 |
---|---|
JSTL EL MVC(feat.Java) (0) | 2021.11.16 |
MVC ํจํด ๊ณต๋ถํ๊ธฐ 1 (0) | 2021.09.30 |
์ปดํ์ผ, ์ปดํ์ผ๋ฌ, ์๋ฐ ์คํฌ๋ฆฝํธ, ์๋ฐ, jsp, servlet ์ฉ์ด ์ ๋ฆฌ (0) | 2021.09.22 |
jsp servlet (0) | 2021.09.20 |