[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-spring-kak-ustroena-arkhitektura-spring-mvc-chto-takoe-dispatcherservlet":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},640,"kak-ustroena-arkhitektura-spring-mvc-chto-takoe-dispatcherservlet",14,"spring","Spring","🌱","Как устроена архитектура Spring MVC? Что такое DispatcherServlet?","Spring MVC -- веб-фреймворк, построенный по паттерну Front Controller. Все HTTP-запросы проходят через единую точку входа -- DispatcherServlet.\n\n### Архитектура обработки запроса\n\n```\nКлиент\n   | HTTP запрос\nDispatcherServlet\n   |\nHandlerMapping --> определяет контроллер\n   |\nHandlerAdapter --> вызывает метод контроллера\n   |\nController --> выполняет бизнес-логику\n   |\nHttpMessageConverter --> сериализует в JSON (для @RestController)\n   или ViewResolver --> рендерит HTML (для @Controller)\n   |\nКлиент \u003C-- HTTP ответ\n```\n\n### Фильтры и интерсепторы\n\n```\nHTTP запрос -> Filter1 -> Filter2 -> DispatcherServlet -> Interceptor.preHandle\n                                                             -> Controller\n                                                         \u003C- Interceptor.postHandle\n                                                         \u003C- Interceptor.afterCompletion\n              \u003C- Filter2 \u003C- Filter1 \u003C- HTTP ответ\n```\n\n\u003Cdetails>\n\u003Csummary>Пример интерсептора\u003C\u002Fsummary>\n\n```java\n@Component\npublic class LoggingInterceptor implements HandlerInterceptor {\n\n    @Override\n    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,\n                             Object handler) {\n        return true; \u002F\u002F true = продолжить, false = прервать\n    }\n\n    @Override\n    public void postHandle(HttpServletRequest request, HttpServletResponse response,\n                           Object handler, ModelAndView modelAndView) { }\n\n    @Override\n    public void afterCompletion(HttpServletRequest request, HttpServletResponse response,\n                                 Object handler, Exception ex) { }\n}\n\n@Configuration\npublic class WebConfig implements WebMvcConfigurer {\n    @Override\n    public void addInterceptors(InterceptorRegistry registry) {\n        registry.addInterceptor(new LoggingInterceptor())\n                .addPathPatterns(\"\u002Fapi\u002F**\");\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n> **На собеседовании:** назовите основные компоненты (DispatcherServlet, HandlerMapping, HandlerAdapter, ViewResolver\u002FHttpMessageConverter) и порядок обработки. Частая ошибка -- не знать разницу между Filter и Interceptor (Filter работает на уровне сервлета, Interceptor -- на уровне Spring MVC).","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":19,"featuredSnippetReady":22},"Как устроена архитектура Spring MVC? Что такое DispatcherSer — Gymterview","Spring MVC -- веб-фреймворк, построенный по паттерну Front Controller. Все HTTP-запросы проходят через единую точку входа -- DispatcherServlet.","Spring MVC -- веб-фреймворк, построенный по паттерну Front Controller. Все HTTP-запросы проходят через единую точку вход",[7,13],true]