[์Šคํ”„๋ง MVC] - 10. DispatcherServlet / ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘๊ณผ ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ

2023. 2. 15. 16:31ยท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) {
   noHandlerFound(processedRequest, response);
   return;
}



2. ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ ์กฐํšŒ - ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋Œ‘ํ„ฐ

// Determine handler adapter for the current request.
HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());

 

 

3. ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ ์‹คํ–‰  -> 4. ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ†ตํ•ด ํ•ธ๋“ค๋Ÿฌ ์‹คํ–‰ -> 5. ModelAndView ๋ฐ˜ํ™˜

// Actually invoke the handler.
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());

 

 

๋™์ž‘ ์ˆœ์„œ

 

ํ•ธ๋“ค๋Ÿฌ ์กฐํšŒ: ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘์„ ํ†ตํ•ด ์š”์ฒญ URL์— ๋งคํ•‘๋œ ํ•ธ๋“ค๋Ÿฌ(์ปจํŠธ๋กค๋Ÿฌ)๋ฅผ ์กฐํšŒํ•œ๋‹ค.

 

ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ ์กฐํšŒ: ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์กฐํšŒํ•œ๋‹ค.

 

ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ ์‹คํ–‰: ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

 

 ํ•ธ๋“ค๋Ÿฌ ์‹คํ–‰: ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์‹ค์ œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

 

ModelAndView ๋ฐ˜ํ™˜: ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ๋Š” ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ •๋ณด๋ฅผ ModelAndView๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

viewResolver ํ˜ธ์ถœ: ๋ทฐ ๋ฆฌ์กธ๋ฒ„๋ฅผ ์ฐพ๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

 

JSP์˜ ๊ฒฝ์šฐ: InternalResourceViewResolver ๊ฐ€ ์ž๋™ ๋“ฑ๋ก๋˜๊ณ , ์‚ฌ์šฉ๋œ๋‹ค.

 

View๋ฐ˜ํ™˜: ๋ทฐ ๋ฆฌ์กธ๋ฒ„๋Š” ๋ทฐ์˜ ๋…ผ๋ฆฌ ์ด๋ฆ„์„ ๋ฌผ๋ฆฌ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊พธ๊ณ , ๋ Œ๋”๋ง ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ทฐ ๊ฐ์ฒด๋ฅผ  ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

JSP์˜ ๊ฒฝ์šฐ InternalResourceView(JstlView) ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ๋‚ด๋ถ€์— forward() ๋กœ์ง์ด ์žˆ๋‹ค.

 

๋ทฐ ๋ Œ๋”๋ง: ๋ทฐ๋ฅผ ํ†ตํ•ด์„œ ๋ทฐ๋ฅผ ๋ Œ๋”๋ง ํ•œ๋‹ค.

 

 

 

ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘๊ณผ ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ

 

@Component("/springmvc/old-controller")
public class OldController implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        System.out.println("OldController.handleRequest");
        return null;
    }
}
 

์ด ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋˜๋ ค๋ฉด ๋‹ค์Œ 2๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

HandlerMapping(ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘)


ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘์—์„œ ์ด ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

@Component("/springmvc/old-controller")


์—ฌ๊ธฐ์„œ๋Š” ์Šคํ”„๋ง ๋นˆ์˜ ์ด๋ฆ„์œผ๋กœ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘์ด ํ•„์š”ํ•˜๋‹ค.

 

๋นˆ์˜ ์ด๋ฆ„์œผ๋กœ URL์„ ๋งคํ•‘ํ•  ๊ฒƒ์ด๋‹ค.

 

 

 

HandlerAdapter(ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ)

 

ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘์„ ํ†ตํ•ด์„œ ์ฐพ์€ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

public class OldController implements Controller


์˜ˆ) Controller ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์ฐพ๊ณ  ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘๋„, ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ๋„ ๋ชจ๋‘ ์ˆœ์„œ๋Œ€๋กœ ์ฐพ๊ณ  ๋งŒ์•ฝ ์—†์œผ๋ฉด ๋‹ค์Œ ์ˆœ์„œ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

 

 

 

1. ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘์œผ๋กœ ํ•ธ๋“ค๋Ÿฌ ์กฐํšŒ


HandlerMapping ์„ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•ด์„œ, ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ฐพ๋Š”๋‹ค.

 

์ด๊ฒฝ์šฐ ๋นˆ์ด๋ฆ„์œผ๋กœ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ฐพ์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๋นˆ์ด๋ฆ„์œผ๋กœ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ฐพ์•„์ฃผ๋Š”

 

BeanNameUrlHandlerMapping ๊ฐ€ ์‹คํ–‰์— ์„ฑ๊ณตํ•˜๊ณ  ํ•ธ๋“ค๋Ÿฌ์ธ OldController ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

 

2. ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ ์กฐํšŒ


HandlerAdapter ์˜ supports() ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœํ•œ๋‹ค.

 

SimpleControllerHandlerAdapter ๊ฐ€ Controller ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ๋Œ€์ƒ์ด ๋œ๋‹ค.

 

 

 

3. ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ ์‹คํ–‰

 

๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์ด ์กฐํšŒํ•œ SimpleControllerHandlerAdapter ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด์„œ ํ•ธ๋“ค๋Ÿฌ ์ •๋ณด๋„ ํ•จ๊ป˜ ๋„˜๊ฒจ์ค€๋‹ค.

 

 SimpleControllerHandlerAdapter ๋Š” ํ•ธ๋“ค๋Ÿฌ์ธ OldController ๋ฅผ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

 

HttpRequestHandler

 

ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘๊ณผ, ์–ด๋Œ‘ํ„ฐ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด Controller ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์•Œ์•„๋ณด์ž.

 

@Component("/springmvc/request-handler")
public class MyHttpRequestHandler implements HttpRequestHandler {

    @Override
    public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("MyHttpRequestHandler.handleRequest");
    }
}

 

1. ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘์œผ๋กœ ํ•ธ๋“ค๋Ÿฌ ์กฐํšŒ


HandlerMapping ์„ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•ด์„œ, ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ฐพ๋Š”๋‹ค.

 

์ด๊ฒฝ์šฐ ๋นˆ์ด๋ฆ„์œผ๋กœ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ฐพ์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๋นˆ์ด๋ฆ„์œผ๋กœ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ฐพ์•„์ฃผ๋Š”

 

BeanNameUrlHandlerMapping ๊ฐ€ ์‹คํ–‰์— ์„ฑ๊ณตํ•˜๊ณ  ํ•ธ๋“ค๋Ÿฌ์ธ MyHttpRequestHandler ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

2. ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ ์กฐํšŒ


HandlerAdapter ์˜ supports() ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœํ•œ๋‹ค.


HttpRequestHandlerAdapter ๊ฐ€ HttpRequestHandler ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ๋Œ€์ƒ์ด ๋œ๋‹ค.

 

 

3. ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ ์‹คํ–‰


๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์ด ์กฐํšŒํ•œ HttpRequestHandlerAdapter ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด์„œ ํ•ธ๋“ค๋Ÿฌ ์ •๋ณด๋„ ํ•จ๊ป˜ ๋„˜๊ฒจ์ค€๋‹ค.

 

HttpRequestHandlerAdapter ๋Š” ํ•ธ๋“ค๋Ÿฌ์ธ MyHttpRequestHandler ๋ฅผ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

 

 

๋ทฐ ๋ฆฌ์กธ๋ฒ„

 

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

application.properties ์— ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ž

 

์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” InternalResourceViewResolver ๋ผ๋Š” ๋ทฐ ๋ฆฌ์กธ๋ฒ„๋ฅผ ์ž๋™์œผ๋กœ ๋“ฑ๋กํ•˜๋Š”๋ฐ,

 

์ด๋•Œ application.properties ์— ๋“ฑ๋กํ•œ spring.mvc.view.prefix , spring.mvc.view.suffix ์„ค์ • ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋“ฑ๋กํ•œ๋‹ค.

 

 

 

1. ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ ํ˜ธ์ถœ


ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ†ตํ•ด new-form ์ด๋ผ๋Š” ๋…ผ๋ฆฌ ๋ทฐ ์ด๋ฆ„์„ ํš๋“ํ•œ๋‹ค.

 

 

2. ViewResolver ํ˜ธ์ถœ


new-form ์ด๋ผ๋Š” ๋ทฐ ์ด๋ฆ„์œผ๋กœ viewResolver๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœํ•œ๋‹ค.


BeanNameViewResolver ๋Š” new-form ์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋œ ๋ทฐ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋Š”๋ฐ ์—†๋‹ค.

 

InternalResourceViewResolver ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

 

 

3. InternalResourceViewResolver

 

์ด ๋ทฐ ๋ฆฌ์กธ๋ฒ„๋Š” InternalResourceView ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

4. ๋ทฐ - InternalResourceView

 

InternalResourceView ๋Š” JSP์ฒ˜๋Ÿผ ํฌ์›Œ๋“œ forward() ๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.

 

 

5. view.render()

 

view.render() ๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ  InternalResourceView ๋Š” forward() ๋ฅผ ์‚ฌ์šฉํ•ด์„œ JSP๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

 

 

 

 

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

 

์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ  - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ๋ชจ๋“  ์›น ๊ธฐ์ˆ ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง MVC์˜ ํ•ต์‹ฌ ์›๋ฆฌ์™€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋” ๊นŠ์ด์žˆ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., -

www.inflearn.com

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Spring > Spring MVC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์Šคํ”„๋ง MVC] - 12. ๋กœ๊ทธ / SLF4J / Logback  (0) 2023.02.16
[์Šคํ”„๋ง MVC] - 11. @Controller / @RequestMapping  (0) 2023.02.15
[์Šคํ”„๋ง MVC] - 9. ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ - ์–ด๋Œ‘ํ„ฐ  (0) 2023.02.15
[์Šคํ”„๋ง MVC] - 8. ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ - ModelView  (0) 2023.02.14
[์Šคํ”„๋ง MVC] - 7. ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ  (0) 2023.02.14
'Spring/Spring MVC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์Šคํ”„๋ง MVC] - 12. ๋กœ๊ทธ / SLF4J / Logback
  • [์Šคํ”„๋ง MVC] - 11. @Controller / @RequestMapping
  • [์Šคํ”„๋ง MVC] - 9. ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ - ์–ด๋Œ‘ํ„ฐ
  • [์Šคํ”„๋ง MVC] - 8. ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ - ModelView
hello_u
hello_u
  • hello_u
    ๐Ÿ˜œ
    hello_u
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿ˜œ (345)
      • Hardware (2)
        • BMC (2)
      • Spring (109)
        • Spring ์ž…๋ฌธ (20)
        • Spring ๊ธฐ๋ณธ (27)
        • Spring MVC (18)
        • Spring DB (22)
        • Spring JPA ๊ธฐ๋ณธ (16)
        • Spring JPA ํ™œ์šฉ (6)
      • Develop (27)
        • DB (8)
        • JAVA (4)
        • Web (2)
        • Python (7)
        • OSS (2)
        • Git (2)
        • API (2)
      • Algorithm (155)
        • CodeUp ๊ธฐ์ดˆ (44)
        • ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (64)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
        • SWEA (30)
        • Softeer (10)
        • BOJ (2)
      • CS (9)
        • ์ปดํ“จํ„ฐ์ผ๋ฐ˜ (3)
        • ์šด์˜์ฒด์ œ (3)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
        • ์ •๋ณดํ†ต์‹  (1)
        • ์ž๋ฃŒ๊ตฌ์กฐ (1)
        • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (1)
        • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (0)
        • ์ตœ์‹  ๋””์ง€ํ„ธ, ์ผ๋ฐ˜์ƒ์‹ (0)
      • ์ž๊ฒฉ์ฆ (41)
        • ์ •๋ณด๋ณด์•ˆ๊ธฐ์‚ฌ (9)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (22)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (3)
        • SQLD (7)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
hello_u
[์Šคํ”„๋ง MVC] - 10. DispatcherServlet / ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘๊ณผ ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”