Упрощенный путь от сервлета к Spring MVC

Java задняя часть Spring MVC

задний план

Servlet и JSP — это две основные технологии для разработки веб-приложений Java, а Spring MVC — это модуль в среде Spring для разработки веб-приложений. Я считаю, что все, как и я, начинали с написания Servelt и JSP, а затем шаг за шагом приближались к Spring MVC. Так что же именно делает Spring MVC упрощенным сервлетом и делает Spring MVC предпочтительным фреймворком для разработки веб-приложений?В этой статье мы обсудим этот аспект.

Введение в сервлеты

Что такое сервлет

Сервлет — это язык на основе Java, используемый для создания веб-приложений. До появления сервлетов в качестве серверных языков программирования были популярны языки сценариев CGI (Common Gateway Interface), но у этой технологии много недостатков:

  • CGI (общий интерфейс шлюза) Даже если CGI позволяет серверу вызывать внешние программы и передавать информацию HTTP-запроса внешним программам для обработки, для каждого запроса будет запущен новый процесс.

  • Недостатки технологии CGI

  1. Увеличение времени отклика по мере увеличения количества клиентов
  2. На каждый запрос нужно запускать новый процесс, который потребляет много системных ресурсов
  3. Используйте платформозависимые языки, такие как: C, C++, Perl
  • Servlet

  • Преимущества сервлета

  1. Лучшая производительность: каждый запрос создает поток, а не процесс
  2. Переносимость: использование кроссплатформенного языка Java
  3. Более мощный: Servlet имеет управление JVM, не нужно беспокоиться об утечках памяти, переполнениях и т. д.

Эволюция сервлета

  • Базовый каталог сервлета

    Создайте указанную выше структуру каталогов в каталоге tomcat/webapps. Все файлы HTML и статические файлы хранятся непосредственно в каталоге приложения. Все классы сервлетов хранятся в каталоге или подкаталоге web-inf/classe. Файл web.xml (дескриптор развертывания) Сохраните его в каталоге web-inf.

  • Интерфейс сервлета В самом базовом классе сервлета должны быть реализованы методы init(), servic(), destroy(), getServletConfig() и geServletInfo(), определенные интерфейсом сервлета. обычно используется в сервисном методе. Это вывод содержимого через объект PrintWriter.

  • Эволюция 1: абстрактный класс GenericServlet При реализации интерфейса Servlet должны быть реализованы все методы, даже если в методах нет кода. С помощью абстрактного класса GenericServlet необходимо переписать только метод службы.

  • Эволюция 2: абстрактный класс HttpServlet HttpServlet охватывает класс GenericServlet и инкапсулирует объекты ServletRequest и ServletResponse как объекты HttpServletRequest и HttpServletResponse соответственно. HttpServlet также реализует сервисный метод. Когда приходит запрос, веб-контейнер сначала вызывает сервисный метод HttpServlet, а затем вызывает метод doGet или doPost в зависимости от типа запроса. Поэтому нам нужно только переопределить doGet() и методы goPost().

Эволюция 3: Добавление JSP

Друзья, которые писали Servlet, должны знать, что самым большим недостатком Servlet является написание большого количества сложного HTML-кода в классе Servlet, который смешивает Java-код и HTML-код, так появился JSP.
Суть JSP — это тоже Servelt, но его не нужно компилировать.JSP-страница — это текстовый файл с расширением .jsp. Простая страница JSP транслируется в сервлет (имя JSP) _jsp после первого запроса.Сервельт после перевода может видеть: методы _jspInit(), _jspDestory(), _jspService() на самом деле соответствуют сервлету.

Эволюция 4: весна рождается

Spring предоставляет мощные функции инверсии управления (IOC) и внедрения зависимостей (DI) для разделения компонентов проекта.

Evolution 5: Весенние веб-модули - весна MVC

Servlet learned friend should know when to use complex functions Servlet done, you need to write multiple Servlet class, and be registered in the web.xml, which for the completion of complex Web applications, write code that will become very complicated, development costs will под кайфом.所以Spring提供了强大的Web开发框架Spring MVC。 Spring MVC是Spring产品的一部分,享有Spring松耦合等所有优点。
Spring MVC — это веб-фреймворк модель-представление-контроллер, построенный на сервлете переднего контроллера (DispatcherServlet), который отвечает за отправку каждого запроса соответствующему обработчику, используя представление для возврата ответа.
Архитектура Spring MVC:

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

  • Модель (Model): инкапсулирует данные приложения, обычно состоящие из классов POJO.
  • Представление (View): отвечает за рендеринг данных модели, обычно генерирует выходные данные HTML, которые может интерпретировать клиентский браузер.
  • Контроллер: отвечает за обработку пользовательских запросов, построение соответствующей модели и передачу ее в представление для рендеринга.

Класс компонента DispatcherServletПлатформа Spring MVC разработана на основе DispatcherServlet, который обрабатывает все запросы и ответы. Рабочий процесс Spring MVC DispatcherServlet:

Рабочий процесс DispatcherServlet, обрабатывающий HTTP-запросы:

  1. Получив HTTP-запрос, DispatcherServlet
  2. HandlerMapping будет запрошен для вызова соответствующего контроллера (в соответствии с запрошенным URL-адресом)
  3. Контроллер принимает запрос и вызывает соответствующий метод службы в соответствии с типом запроса Get/Post, метод службы выполняет соответствующую бизнес-обработку, устанавливает данные модели и, наконец, возвращает имя представления в DispatcherServlet.
  4. DispatcherServlet получает соответствующее представление от ViewResolver в соответствии с возвращенным именем представления.
  5. DispatcherServlet передает данные модели в окончательное представление и возвращает представление в браузер.

Суммировать

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

Ссылка на ссылку:Ссылка 1 Ссылка 2