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

Русские Блоги

Многоуровневая модель приложения Java EE:
Domain Object Слой презентации -> DAO(Data Access Object) Уровень объекта доступа к данным —> Service Слой бизнес-логики —> Controller Слой контроллера -> View Слой представления.
То, что я узнал раньше, JSP + Servlet + JavaBean Технология разработки веб-приложений. Он использует технологию JDBC для взаимодействия с базой данных. Особенно в сочетании с инструментами DBUtils и источниками данных он упрощает такие операции, как подключение к базе данных и упаковка набора результатов.Говорят, что MyBatis, который будет изучен следующим, устраняет почти весь процесс ручной настройки кода и параметров JDBC, а также извлечение и упаковку набора результатов.Эта статья в основном не касается базы данных. Основное внимание уделяется сервлету.

Servlet С SpringMVC DispatcherServlet с участием Controller различия

Приложения, использующие JSP + Servlet, наслоение недостаточно четкое,Реализация бизнес-логики отдельно не выделяется, Вызывает трудности при последующем обслуживании.
В Spring MVC сервлет имеет различные «аватары», отвечающие за перехват и распределение запросов. DispatcherServlet , И ответственные за ведение бизнеса Controller , Существуют различные преобразователи процессоров, адаптеры процессоров и т. Д., Каждый с четким разделением труда.Это содержание, которому посвящена данная статья.
Платформа SpringMVC предоставляет DispatcherServlet в качестве фронт-контроллера для отправки запросов.DispatcherServlet наследуется от HttpServlet. Его способность перехватывать запросы напоминает технологию Filter in Servlet. Однако фильтр не будет мешать исходному URL-адресу. URL-запросы, обработанные фильтром, по-прежнему будут переходить к соответствующему сервлету в соответствии с отображением в конфигурации web.xml или даже переходить к соответствующему сервлету без прохождения фильтра.

Читайте также:  Просмотр

DispatcherServlet в Spring MVC

DispatcherServlet другой, URL-запрос иметь После DispatcherServlet, поскольку для чтения информации о сопоставлении требуется DispatcherServlet.
Если DispatcherServlet настроен в web.xml, используйте тег 1 , чтобы указать, что он загружается сразу после запуска программы. DispatcherServlet Нужно читать при загрузке Spring MVC Файл конфигурации, а затем проанализируйте содержимое файла и создайте WebApplicationContext Объект-контейнер. (Этот объект содержит такую ​​информацию, как отображение запроса и средство отображения процессора).С помощью этого объекта-контейнера разработчики могут использовать Spring IOC, AOP и другие функции.

В DispatcherServlet есть initStrategies(ApplicationContext context) Метод, когда метод вызывается, сгенерированный WebApplicationContext Объект передается в этот метод. Если преобразователь обработки, адаптер процессора и другие компоненты настроены в файле конфигурации, то WebApplicationContext Найдите и инициализируйте его. Если он не найден, будут использоваться компоненты Spring по умолчанию.
Запрос, распространяемый DispatcherServlet, будет передан соответствующему классу Java, который вызывается в Spring MVC. Handle . До Spring 2.5 этот класс Handle требовался для реализации интерфейса контроллера.

Контроллер в Spring MVC (отличие от сервлета)

Интерфейс контроллера должен реализовывать метод, который должен возвращать объект ModelAndView:

 public class HelloController implements Controller < . ModelAndView handleRequest(HTtpServletReqeust request,HttpServletResponse response) throws Exceptiona< . >> 

Контроллер на основе аннотаций был добавлен в Spring 2.5.

@Controller public class HelloController < . @RequestMapping(value="/hello") public ModelAndView hello()< . >> 

Также HelloController, написанный сейчасНет необходимости наследовать от интерфейса контроллера. Нет необходимости заставлять реализацию метода handleRequest () возвращать объект ModelAndView, но Можно настроить несколько методов Чтобы вернуть объект ModelAndView,Таким образом, несколько запросов могут быть сопоставлены одному и тому же контроллеру, и для обработки запросов могут быть вызваны разные методы.Если вы следуете предыдущему подходу, хотя вы можете сопоставить несколько запросов с одним и тем же контроллером в файле конфигурации Spring MVC, вы можете вызвать только метод handleRequest ().
соответственно,После использования аннотации нет необходимости отображать запрос в файле конфигурации Spring MVC.
При использовании технологии сервлетов для обработки запросов Http в интерфейсе сервлетов предоставляется абстрактный класс HttpServlet, который является подклассом GenericServlet. Наследуйте HttpServlet и переопределите методы doGet () и doPost ():И не требуется возвращать объект, вы также можете перейти на страницу JSP, а затем позволить JSP отображать содержимое самостоятельно

public class UploadServlet extends HttpServelt < public void doGet(HttpServeltRequest request,HttpServeltResponse response) throws ServletException,IOException< . >. > 

Даже если это всего лишь прыжок,В Spring MVC информация о переходе также должна быть инкапсулирована в объект ModelAndView, и параметры, которые необходимо передать, также сохраняются в объекте.. На новой странице к переданным параметрам можно получить доступ через requestScope.

Настроить Spring MVC Controller

Часть информации файла конфигурации Spring MVC выглядит следующим образом:

    Эта информация имеет прямое отношение к Controller. Независимо от того, находится ли он здесь в сервлете или контроллере, запрос должен быть отображен. Здесь запрос / hello отображается на дескриптор HelloController. и SimpleControllerHandlerAdapter Используется для завершения вызова метода handleRequest класса HelloController. и InternalResourceViewResolver Он используется для разрешения представления (после Spring 4.0, даже если процессор сопоставления, адаптер процессора и преобразователь представлений не настроены, будет использоваться работа MVC по умолчанию внутри Spring).

После использования аннотации вам необходимо изменить файл конфигурации Spring MVC. Во-первых, нет необходимости отображать запрос в файле конфигурации. Но нужно знать расположение всех контроллеров.

Затем вам нужно настроить преобразователь обработки типа аннотации и адаптер процессора, но преобразователь представлений менять не нужно.。 Конечно, после Spring 4.0 есть более простой способ настройки. 。

А здесь только реализация маппинга, а доступа нет. Экземпляр контроллера создается посредством отражения.Я понимаю, что нужно найти путь к соответствующему классу на основе URL-ссылки, а затем сгенерировать экземпляр на основе этого пути.. Эта часть предположения пройдена HandlerMapping Чтобы добиться конкретно. Затем адаптер процессора используется для вызова метода handleRequest (), который мы знаемПри использовании сервлета метод doGet () или doPost () будет автоматически выполняться в зависимости от того, является ли он GET или POST, когда он встречает запрос. И после создания здесь вам понадобится адаптер процессора для вызова
Анализатор представления отвечает за получение подключений и параметров от объекта ModelAndView, а затем их передачу в DispatcherServlet.Насколько я понимаю, в настоящее время разница между Handler и Servlet заключается в том, что Handler должен возвращать объект ModelAndView, в то время как сервлету он не нужен, и большой разницы нет.Также сказано, что сервлет является родительским классом контроллера.

Источник

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

Lapita12

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

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

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

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

Lapita12

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

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

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

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

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

Источник

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

Lapita12

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

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

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

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

Lapita12

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

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

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

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

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

Источник

Оцените статью