Чем контроллер отличается от сервлета java
Перейти к содержимому

Чем контроллер отличается от сервлета java

  • автор:

В чем разница между Контроллером и Сервлетом?

Я не знаю, в чем основные различия между ними и какие преимущества имеют сервлет и контроллер.

Поделиться Источник 07 мая 2019 в 08:10

2 ответа

Я не знаю, в чем основная разница между ними.

Какие преимущества имеют сервлеты.

Чтобы ответить на это, вам нужно понять, для чего они были предназначены. В основном, их основная цель — отвечать на запросы динамическим и независимым (от других сервлетов) образом.

Они могут быть статичными.
Они могут управлять сессиями.
Они могут общаться с другими сервлетами.
Они легко переносимы.
Жизненный цикл сервлета обычно управляется контейнером, который упрощает работу.

Вопрос немного расплывчатый, и трудно ответить на него вкратце. Лучше бы вам получить практический опыт работы с обоими. Перед этим просмотрите материалы, которые я упомянул ниже.

Поделиться 07 мая 2019 в 08:26

Контроллер является частью шаблона Model-View-Controller:

Model-View-Controller (обычно известный как MVC) является архитектурным шаблоном, который обычно используется для разработки пользовательских интерфейсов, которые делят приложение на три взаимосвязанные части. Это делается для разделения внутренних представлений информации от способов, которыми информация представлена и принимается от пользователя.1 Шаблон проектирования MVC разделяет эти основные компоненты, позволяя эффективное повторное использование кода и параллельную разработку.

Сервлет может быть Контроллером

Контроллер выступает в качестве интерфейса между View и Model. Контроллер перехватывает все входящие запросы.

Модель представляет состояние приложения, т.е. данные. Она также может иметь бизнес-логику.

Но не обязательно (может выполнять «model»/»view» операции).

Аналог Spring @Controller в Java Servlet

Спринговые контроллеры ( @Controller ) позволяют обрабатывать множество URL — паттернов. А как быть с сервлетами, один сервлет на один url ? Спасибо.

Отслеживать
задан 15 дек 2016 в 19:32
115 2 2 серебряных знака 10 10 бронзовых знаков

Spring @Controller это надстройка над Servlet-ами. Spring устанавливает свой Servlet, который работает для всех url и перенаправляет запрос к конкретному контролёру. Учите мат.часть, вроде никто этого в секрете не держит и всё можно найти в той же документации по Spring-у. А уж по servlet-ам даже на русском материалов до. много короче ещё со времён первого появления этой технологии.

16 дек 2016 в 3:53

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Нет, сервлет — это приложение, которое ловит все внутри выделенного ему context path. Вам нужно сделать роутер, который будет разбирать url и вызывать соответствующий код (контроллер). Собственно, этим и занимается спринг, вы можете без труда повторить его основу, создав аналогичную аннотацию, сканируя в рантайме пакет с вашим приложением и находя соответствие текущего URL заданному в аннотации.

Отслеживать
ответ дан 15 дек 2016 в 20:05
36.1k 2 2 золотых знака 56 56 серебряных знаков 83 83 бронзовых знака

Собственно context вместе с contex path-ем выделяется действительно приложению. Но servlet != приложение. Это его составная часть. Их может быть много, может быть один.

В чем разница между сервлетом и контроллером?

Lapita12

Главная мысль в разнице между сервлетом и контроллером заключается в том, что сервлеты — это низкоуровневые компоненты Java EE для обработки HTTP-запросов, а контроллеры — более высокоуровневая абстракция, использующая архитектуру MVC и фреймворки типа Spring MVC для организации логики обработки запросов.

OldJohn @OldJohn Автор вопроса

сервлет — для обработки HTTP-запросов
контроллер — для организации логики обработки запросов.

Или это одно и то же,или я чего то не понял

Сервлет разбирает http запрос, вычитывает заголовки, и тд, а контроллер определяет что пользователю по этому запросу нужно (какую вьюху вернуть, грубо говоря) правильно?

Lapita12

OldJohn, Ваши выражения в основном верны, но позвольте мне разъяснить их еще немного:

Сервлеты и контроллеры оба обрабатывают HTTP-запросы, но на разных уровнях абстракции и в разных контекстах.

Сервлет — это низкоуровневый компонент Java EE, который обрабатывает HTTP-запросы, разбирает заголовки и формирует HTTP-ответы. Сервлеты предоставляют базовую функциональность для обработки запросов, но обычно требуют больше кода для управления деталями и состоянием сессии.

Контроллер — это более высокоуровневая абстракция, которая использует архитектуру MVC и фреймворки, такие как Spring MVC. Контроллеры определяют логику обработки запросов и определяют, какие данные должны быть получены из модели и какие представления (view) должны быть отображены. Контроллеры упрощают и структурируют обработку запросов, предоставляя аннотации и соглашения для определения обработчиков запросов.

Cервлеты и контроллеры имеют разные цели и уровни абстракции, хотя оба обрабатывают HTTP-запросы. Сервлеты фокусируются на непосредственной обработке HTTP-запросов, а контроллеры организуют логику обработки запросов в контексте архитектуры MVC и фреймворков.

Разница между Servlet, Spring MVC и Spring Boot

Java-университет

Хотите начать писать веб-приложения на Java? Первым способом будет начать использовать фреймворк (набор библиотек, архитектур, шаблонов проектирования для минимизации повторяющегося кода), и один из популярных веб фреймворков на Java — это Spring MVC, который крутится под капотом у Spring Boot. Зачем нужен Spring Boot? Для начало нужно понять философию Spring. Под экосистемой Spring лежит очень много библиотек, но в проектах не все они нужны. И они спроектированы так, чтобы можно было их подключать гибко, не мешая друг другу. Но со временем, когда в проекте становится много библиотек и кода, то сконфигурировать их становится нетривиальной задачей. И хочется взять готовый шаблон, который работает вместе хорошо. Вот Spring Boot предоставляет возможность склеивать между собой много Spring библиотек легко и просто, в пару строчек кода или конфигурации. А под капотом у Spring MVC лежит Servlet API. Вы конечно же можете написать веб-приложение, используя только Servlet API, но объем кода, особенно повторяющегося, будет очень большим. И другой разработчик может не понять данный код из набора спагетти if’ов. Для полного понимания их разницы предлагаю просмотреть следующее короткое видео.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *