Spring/Spring MVC
SpringMVC ๊ตฌ์กฐ DispatcherServlet ๊ตฌ์กฐ ์ดํด๋ณด๊ธฐ ์คํ๋ง MVC์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๊ฐ ๋ฐ๋ก ๋์คํจ์ฒ ์๋ธ๋ฆฟ(DispatcherServlet)์ด๋ค. ์คํ๋ง ๋ถํธ๋ DispacherServlet ์ ์๋ธ๋ฆฟ์ผ๋ก ์๋์ผ๋ก ๋ฑ๋กํ๋ฉด์ ๋ชจ๋ ๊ฒฝ๋ก( urlPatterns="/" )์ ๋ํด์ ๋งคํํ๋ค. ์๋ธ๋ฆฟ์ด ํธ์ถ๋๋ฉด FrameworkServlet.service() ๋ฅผ ์์์ผ๋ก ์ฌ๋ฌ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด์ DispacherServlet.doDispatch() ๊ฐ ํธ์ถ๋๋ค. 1. ํธ๋ค๋ฌ ์กฐํ // Determine handler for the current request. mappedHandler = getHandler(processedRequest); if (mappedHandler == null) {..
Spring/Spring MVC
๋ง์ฝ ์ด๋ค ๊ฐ๋ฐ์๋ ControllerV3 ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐํ๊ณ ์ถ๊ณ , ์ด๋ค ๊ฐ๋ฐ์๋ ControllerV4 ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? ์ง๊ธ๊น์ง ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ ํ๊ฐ์ง ๋ฐฉ์์ ์ปจํธ๋กค๋ฌ ์ธํฐํ์ด์ค๋ง ์ฌ์ฉํ ์ ์๋ค. ControllerV3 , ControllerV4 ๋ ์์ ํ ๋ค๋ฅธ ์ธํฐํ์ด์ค์ด๋ค. ๋ฐ๋ผ์ ํธํ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๋ง์น v3๋ 110v์ด๊ณ , v4๋ 220v ์ ๊ธฐ ์ฝ์ผํธ ๊ฐ์ ๊ฒ์ด๋ค. ์ด๋ด ๋ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก ์ด๋ํฐ์ด๋ค. ์ด๋ํฐ ํจํด์ ์ฌ์ฉํด์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๊ฐ ๋ค์ํ ๋ฐฉ์์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋ณ๊ฒฝํด๋ณด์. V5 ๊ตฌ์กฐ - ์ด๋ํฐ ํจํด ํธ๋ค๋ฌ ์ด๋ํฐ: ์ค๊ฐ์ ์ด๋ํฐ ์ญํ , ๋ค์ํ ์ข
๋ฅ์ ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํ ์ ์๋ค. ํธ๋ค๋ฌ: ์ปจํธ๋กค๋ฌ์ ์ด๋ฆ์ ๋ ๋์ ๋ฒ์์ธ ..
Spring/Spring MVC
ModelView - V3 ModelView ์๋ธ๋ฆฟ์ ์ข
์์ฑ์ ์ ๊ฑฐํ๊ธฐ ์ํด Model์ ์ง์ ๋ง๋ค๊ณ , ์ถ๊ฐ๋ก View ์ด๋ฆ๊น์ง ์ ๋ฌํ๋ ๊ฐ์ฒด 0. HTTP ์์ฒญ @WebServlet(name = "frontControllerServletV3",urlPatterns = "/front-controller/v3/*") public class FrontControllerServletV3 extends HttpServlet { /front-controller/v3 ํ์ ๋ชจ๋ ์์ฒญ์ ์ด ์๋ธ๋ฆฟ์์ ๋ฐ์๋ค์ธ๋ค. 1. ์ปจํธ๋กค๋ฌ ์กฐํ private Map controllerMap = new HashMap(); public FrontControllerServletV3() { controllerMap.put("/front..
Spring/Spring MVC
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ํจํด ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ๋์
์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ๋์
ํ FrontController ํจํด ํน์ง ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ์๋ธ๋ฆฟ ํ๋๋ก ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๊ฐ ์์ฒญ์ ๋ง๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์์ ํธ์ถ ์
๊ตฌ๋ฅผ ํ๋๋ก! / ๊ณตํต ์ฒ๋ฆฌ ๊ฐ๋ฅ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ปจํธ๋กค๋ฌ๋ ์๋ธ๋ฆฟ์ ์ฌ์ฉํ์ง ์์๋ ๋จ V1 ๊ตฌ์กฐ urlPatterns = "/front-controller/v1/*" /front-controller/v1 ๋ฅผ ํฌํจํ ํ์ ๋ชจ๋ ์์ฒญ์ ์ด ์๋ธ๋ฆฟ์์ ๋ฐ์๋ค์ธ๋ค. private Map controllerMap = new HashMap(); public FrontControllerServletV1() { controllerMap.put("/front-controller/v1..
Spring/Spring MVC
MVC ํจํด - ์ ์ฉ ์๋ธ๋ฆฟ์ ์ปจํธ๋กค๋ฌ๋ก ์ฌ์ฉํ๊ณ , JSP๋ฅผ ๋ทฐ๋ก ์ฌ์ฉํด์ MVC ํจํด์ ์ ์ฉํด๋ณด์. Model์ HttpServletRequest ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค. request๋ ๋ด๋ถ์ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, request.setAttribute() , request.getAttribute() ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๊ณ , ์กฐํํ ์ ์๋ค. ํ์ ๋ฑ๋ก ํผ - ์ปจํธ๋กค๋ฌ @WebServlet(name = "mvcMemberFormServlet", urlPatterns = "/servlet-mvc/members/new-form") public class MvcMemberFormServlet extends HttpServlet { @Override protected void service(Http..
Spring/Spring MVC
์๋ธ๋ฆฟ์ผ๋ก ํ์ ๊ด๋ฆฌ ์น ์ ํ๋ฆฌ์ผ์ด์
๋ง๋ค๊ธฐ @WebServlet(name = "memberSaveServlet",urlPatterns = "/servlet/members/save") public class MemberSaveServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("MemberSaveServle..
Spring/Spring MVC
HttpServletResponse HTTP ์๋ต ๋ฉ์์ง๋ฅผ ์์ฑํ๋ค . //[status-line] response.setStatus(HttpServletResponse.SC_OK); setStatus() : ์ํ ์ฝ๋ ์ง์ ํ๊ธฐ //response.setHeader("Content-Type", "text/plain;charset=utf-8"); response.setContentType("text/plain"); response.setCharacterEncoding("utf-8"); [์ฟ ํค ํธ์ ๋ฉ์๋] private void cookie(HttpServletResponse response) { // Set-Cookie: myCookie=good; Max-Age=600; // response.setHe..
Spring/Spring MVC
HTTP ์์ฒญ ๋ฐ์ดํฐ HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. ์ฃผ๋ก ๋ค์ 3๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. GET - ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ /url?username=hello&age=20 ๋ฉ์์ง ๋ฐ๋ ์์ด, URL์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ ์ ๋ฌ ์) ๊ฒ์, ํํฐ, ํ์ด์ง๋ฑ์์ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ์ POST - HTML Form content-type: application/x-www-form-urlencoded ๋ฉ์์ง ๋ฐ๋์ ์ฟผ๋ฆฌ ํ๋ฆฌ๋ฏธํฐ ํ์์ผ๋ก ์ ๋ฌ username=hello&age=20 ์) ํ์ ๊ฐ์
, ์ํ ์ฃผ๋ฌธ, HTML Form ์ฌ์ฉ HTTP message body์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ด์์ ์์ฒญ HTTP API์์ ์ฃผ๋ก ์ฌ์ฉ, JSON, XML, TEXT ๋ฐ..