Учебники

10) JSP MVC

Что такое MVC?

MVC — это архитектура, которая разделяет бизнес-логику, представление и данные. В MVC

  • М обозначает модель
  • V обозначает вид
  • С обозначает контроллер.

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

Слой модели:

  • Это уровень данных, который состоит из бизнес-логики системы.
  • Он состоит из всех данных приложения
  • Он также представляет состояние приложения.
  • Он состоит из классов, которые имеют связь с базой данных.
  • Контроллер соединяется с моделью, получает данные и отправляет их на слой представления.
  • Модель также связывается с базой данных и сохраняет данные в базе данных, которая к ней подключена.

Просмотр слоя:

  • Это уровень представления.
  • Он состоит из HTML, JSP и т. Д.
  • Обычно он представляет пользовательский интерфейс приложения.
  • Он используется для отображения данных, которые выбираются из контроллера, который, в свою очередь, выбирает данные из классов слоя модели.
  • Этот слой представления показывает данные об интерфейсе приложения.

Уровень контроллера:

  • Он действует как интерфейс между View и Model.
  • Он перехватывает все запросы, поступающие со слоя представления.
  • Он получает запросы от уровня представления, обрабатывает запросы и выполняет необходимую проверку для запроса.
  • Эти запросы затем отправляются на уровень модели для обработки данных, и, как только запрос обрабатывается, он отправляет обратно в контроллер с необходимой информацией и соответствующим образом отображает представление.

Диаграмма представлена ​​ниже:

JSP MVC

Преимущества MVC:

  • Простота в обслуживании
  • Легко продлить
  • Легко проверить
  • Управление навигацией централизовано

Пример архитектуры MVC

В этом примере мы собираемся показать, как использовать архитектуру MVC в JSP.

  • Мы возьмем пример формы с двумя переменными «электронная почта» и «пароль», которая является нашим слоем представления.
  • Когда пользователь вводит электронную почту, пароль и нажимает кнопку «Отправить», действие передается в mvc_servlet, где передаются электронная почта и пароль.
  • Этот mvc_servlet является уровнем контроллера. Здесь, в mvc_servlet, запрос отправляется объекту bean, который действует как уровень модели.
  • Значения электронной почты и пароля задаются в bean-компоненте и сохраняются для дальнейшей цели.
  • Из bean-компонента значение выбирается и отображается в слое вида.

Mvc_example.jsp

  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  2. pageEncoding="ISO-8859-1"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  7. <title>MVC Guru Example</title>
  8. </head>
  9. <body>
  10. <form action="Mvc_servlet" method="POST">
  11. Email: <input type="text" name="email">
  12. <br />
  13. Password: <input type="text" name="password" />
  14. <input type="submit" value="Submit" />
  15. </form>
  16. </body>
  17. </html>

Пояснение к коду:

Просмотр слоя:

Строка кода 10-15: здесь мы принимаем форму, которая имеет два поля в качестве параметра «email» и «пароль», и этот запрос необходимо переслать контроллеру Mvc_servlet.java, который передается в действии. Метод, через который он пропущен метод POST.

Mvc_servlet.java

  1. package demotest;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.RequestDispatcher;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.http.HttpServlet;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10.  
  11. /**
  12. * Servlet implementation class Mvc_servlet
  13. */
  14. public class Mvc_servlet extends HttpServlet {
  15. private static final long serialVersionUID = 1L;
  16. /**
  17. * @see HttpServlet#HttpServlet()
  18. */
  19. public Mvc_servlet() {
  20. super();
  21. // TODO Auto-generated constructor stub
  22. }
  23.  
  24.  
  25. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  26. // TODO Auto-generated method stub
  27. String email=request.getParameter("email");
  28. String password=request.getParameter("password");
  29. TestBean testobj = new TestBean();
  30. testobj.setEmail(email);
  31. testobj.setPassword(password);
  32. request.setAttribute("gurubean",testobj);
  33. RequestDispatcher rd=request.getRequestDispatcher("mvc_success.jsp");
  34. rd.forward(request, response);
  35. }
  36.  
  37. }

Пояснение к коду:

Уровень контроллера

Строка кода 14: mvc_servlet расширяет HttpServlet.

Строка кода 26: Поскольку используемый метод — это POST, следовательно, запрос входит в метод сервлета doPost, который обрабатывает запросы и сохраняет его в объектном компоненте как testobj.

Строка кода 34: Используя объект запроса, мы устанавливаем атрибут как gurubean, которому присваивается значение testobj.

Строка кода 35: Здесь мы используем объект диспетчера запросов для передачи сообщения об успешном выполнении в mvc_success.jsp

TestBean.java

  1. package demotest;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class TestBean implements Serializable{
  6. public String getEmail() {
  7. return email;
  8. }
  9. public void setEmail(String email) {
  10. this.email = email;
  11. }
  12. public String getPassword() {
  13. return password;
  14. }
  15. public void setPassword(String password) {
  16. this.password = password;
  17. }
  18. private String email="null";
  19. private String password="null";
  20.  
  21.  
  22. }

Пояснение к коду:

Слой модели:

Строка кода 7-17: содержит методы получения и установки электронной почты и пароля, которые являются членами класса Test Bean

Строка кода 19-20: определяет электронную почту и пароль членов типа строки в классе компонента.

Mvc_success.jsp

  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  2. pageEncoding="ISO-8859-1"%>
  3. <%@page import="demotest.TestBean"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  8. <title>Guru Success</title>
  9. </head>
  10. <body>
  11. <%
  12. TestBean testguru=(TestBean)request.getAttribute("gurubean");
  13. out.print("Welcome, "+testguru.getEmail());
  14. %>
  15. </body>
  16. </html>

Пояснение к коду:

Строка кода 12: мы получаем атрибут, используя объект запроса, который был установлен в методе doPost сервлета.

Строка кода 13: мы печатаем приветственное сообщение и идентификатор электронной почты, которые были сохранены в объекте bean

Вывод:

Когда вы выполните приведенный выше код, вы получите следующий вывод:

Когда вы нажимаете mvc_example.jsp, вы получаете форму с адресом электронной почты и паролем с помощью кнопки отправки.

После ввода адреса электронной почты и пароля в форму, а затем нажмите кнопку отправить.

JSP MVC

После нажатия на кнопку «Отправить» вывод будет показан ниже.

JSP MVC

Вывод:

Когда вы вводите электронную почту и пароль на экране и затем нажимаете «Отправить», детали сохраняются в TestBean, а из TestBean они выбираются на следующем экране, чтобы получить сообщение об успехе.

Резюме:

В этой статье мы узнали о MVC, т.е. архитектуре Model View Controller.

JSP играет роль представления данных и контроллера. Это интерфейс между моделью и представлением, в то время как модель подключается как к контроллеру, так и к базе данных. Основная бизнес-логика присутствует на уровне модели.