Что такое MVC?
MVC — это архитектура, которая разделяет бизнес-логику, представление и данные. В MVC
- М обозначает модель
- V обозначает вид
- С обозначает контроллер.
MVC — это систематический способ использования приложения, в котором поток начинается с уровня представления, где запрос поднимается и обрабатывается на уровне контроллера и отправляется на уровень модели для вставки данных и возврата сообщения об успехе или ошибке.
Слой модели:
- Это уровень данных, который состоит из бизнес-логики системы.
- Он состоит из всех данных приложения
- Он также представляет состояние приложения.
- Он состоит из классов, которые имеют связь с базой данных.
- Контроллер соединяется с моделью, получает данные и отправляет их на слой представления.
- Модель также связывается с базой данных и сохраняет данные в базе данных, которая к ней подключена.
Просмотр слоя:
- Это уровень представления.
- Он состоит из HTML, JSP и т. Д.
- Обычно он представляет пользовательский интерфейс приложения.
- Он используется для отображения данных, которые выбираются из контроллера, который, в свою очередь, выбирает данные из классов слоя модели.
- Этот слой представления показывает данные об интерфейсе приложения.
Уровень контроллера:
- Он действует как интерфейс между View и Model.
- Он перехватывает все запросы, поступающие со слоя представления.
- Он получает запросы от уровня представления, обрабатывает запросы и выполняет необходимую проверку для запроса.
- Эти запросы затем отправляются на уровень модели для обработки данных, и, как только запрос обрабатывается, он отправляет обратно в контроллер с необходимой информацией и соответствующим образом отображает представление.
Диаграмма представлена ниже:
Преимущества MVC:
- Простота в обслуживании
- Легко продлить
- Легко проверить
- Управление навигацией централизовано
Пример архитектуры MVC
В этом примере мы собираемся показать, как использовать архитектуру MVC в JSP.
- Мы возьмем пример формы с двумя переменными «электронная почта» и «пароль», которая является нашим слоем представления.
- Когда пользователь вводит электронную почту, пароль и нажимает кнопку «Отправить», действие передается в mvc_servlet, где передаются электронная почта и пароль.
- Этот mvc_servlet является уровнем контроллера. Здесь, в mvc_servlet, запрос отправляется объекту bean, который действует как уровень модели.
- Значения электронной почты и пароля задаются в bean-компоненте и сохраняются для дальнейшей цели.
- Из bean-компонента значение выбирается и отображается в слое вида.
Mvc_example.jsp
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>MVC Guru Example</title>
- </head>
- <body>
- <form action="Mvc_servlet" method="POST">
- Email: <input type="text" name="email">
- <br />
- Password: <input type="text" name="password" />
- <input type="submit" value="Submit" />
- </form>
- </body>
- </html>
Пояснение к коду:
Просмотр слоя:
Строка кода 10-15: здесь мы принимаем форму, которая имеет два поля в качестве параметра «email» и «пароль», и этот запрос необходимо переслать контроллеру Mvc_servlet.java, который передается в действии. Метод, через который он пропущен метод POST.
Mvc_servlet.java
- package demotest;
- import java.io.IOException;
- import javax.servlet.RequestDispatcher;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- /**
- * Servlet implementation class Mvc_servlet
- */
- public class Mvc_servlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- /**
- * @see HttpServlet#HttpServlet()
- */
- public Mvc_servlet() {
- super();
- // TODO Auto-generated constructor stub
- }
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
- String email=request.getParameter("email");
- String password=request.getParameter("password");
- TestBean testobj = new TestBean();
- testobj.setEmail(email);
- testobj.setPassword(password);
- request.setAttribute("gurubean",testobj);
- RequestDispatcher rd=request.getRequestDispatcher("mvc_success.jsp");
- rd.forward(request, response);
- }
- }
Пояснение к коду:
Уровень контроллера
Строка кода 14: mvc_servlet расширяет HttpServlet.
Строка кода 26: Поскольку используемый метод — это POST, следовательно, запрос входит в метод сервлета doPost, который обрабатывает запросы и сохраняет его в объектном компоненте как testobj.
Строка кода 34: Используя объект запроса, мы устанавливаем атрибут как gurubean, которому присваивается значение testobj.
Строка кода 35: Здесь мы используем объект диспетчера запросов для передачи сообщения об успешном выполнении в mvc_success.jsp
TestBean.java
- package demotest;
- import java.io.Serializable;
- public class TestBean implements Serializable{
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- private String email="null";
- private String password="null";
- }
Пояснение к коду:
Слой модели:
Строка кода 7-17: содержит методы получения и установки электронной почты и пароля, которые являются членами класса Test Bean
Строка кода 19-20: определяет электронную почту и пароль членов типа строки в классе компонента.
Mvc_success.jsp
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <%@page import="demotest.TestBean"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Guru Success</title>
- </head>
- <body>
- <%
- TestBean testguru=(TestBean)request.getAttribute("gurubean");
- out.print("Welcome, "+testguru.getEmail());
- %>
- </body>
- </html>
Пояснение к коду:
Строка кода 12: мы получаем атрибут, используя объект запроса, который был установлен в методе doPost сервлета.
Строка кода 13: мы печатаем приветственное сообщение и идентификатор электронной почты, которые были сохранены в объекте bean
Вывод:
Когда вы выполните приведенный выше код, вы получите следующий вывод:
Когда вы нажимаете mvc_example.jsp, вы получаете форму с адресом электронной почты и паролем с помощью кнопки отправки.
После ввода адреса электронной почты и пароля в форму, а затем нажмите кнопку отправить.
После нажатия на кнопку «Отправить» вывод будет показан ниже.
Вывод:
Когда вы вводите электронную почту и пароль на экране и затем нажимаете «Отправить», детали сохраняются в TestBean, а из TestBean они выбираются на следующем экране, чтобы получить сообщение об успехе.
Резюме:
В этой статье мы узнали о MVC, т.е. архитектуре Model View Controller.
JSP играет роль представления данных и контроллера. Это интерфейс между моделью и представлением, в то время как модель подключается как к контроллеру, так и к базе данных. Основная бизнес-логика присутствует на уровне модели.