MVC trong JSP (Archikiến trúc)
MVC là gì?
MVC là một kiến trúc tách biệt logic kinh doanh, trình bày và dữ liệu. Trong MVC,
- M là viết tắt của Model
- V là viết tắt của Xem
- C là viết tắt của bộ điều khiển.
MVC là một cách có hệ thống để sử dụng ứng dụng trong đó luồng bắt đầu từ lớp xem, nơi yêu cầu được đưa ra và xử lý trong lớp điều khiển và gửi đến lớp mô hình để chèn dữ liệu và lấy lại thông báo thành công hay thất bại. MVC Archisơ đồ kiến trúc được thể hiện dưới đây:

Lớp mô hình
- Đây là lớp dữ liệu bao gồm logic nghiệp vụ của hệ thống.
- Nó bao gồm tất cả dữ liệu của ứng dụng
- Nó cũng đại diện cho trạng thái của ứng dụng.
- Nó bao gồm các lớp có kết nối với cơ sở dữ liệu.
- Bộ điều khiển kết nối với mô hình và tìm nạp dữ liệu rồi gửi đến lớp xem.
- Mô hình cũng kết nối với cơ sở dữ liệu và lưu trữ dữ liệu vào cơ sở dữ liệu được kết nối với nó.
Xem lớp
- Đây là một lớp trình bày.
- Nó bao gồm HTML, JSP, v.v. vào đó.
- Nó thường trình bày giao diện người dùng của ứng dụng.
- Nó được sử dụng để hiển thị dữ liệu được tìm nạp từ bộ điều khiển, từ đó tìm nạp dữ liệu từ các lớp lớp mô hình.
- Lớp xem này hiển thị dữ liệu về giao diện người dùng của ứng dụng.
Lớp điều khiển
- Nó hoạt động như một giao diện giữa View và Model.
- Nó chặn tất cả các yêu cầu đến từ lớp xem.
- Nó nhận các yêu cầu từ lớp xem và xử lý các yêu cầu cũng như thực hiện xác thực cần thiết cho yêu cầu.
- Yêu cầu này tiếp tục được gửi đến lớp mô hình để xử lý dữ liệu và sau khi yêu cầu được xử lý, nó sẽ gửi lại cho bộ điều khiển với thông tin cần thiết và được hiển thị tương ứng bởi chế độ xem.
Ưu điểm của MVC Archikiến trúc
Ưu điểm của MVC là:
- Dễ dàng để duy trì
- Dễ dàng mở rộng
- Dễ kiểm tra
- Kiểm soát điều hướng được tập trung
Ví dụ về thiết kế ứng dụng JSP với MVC Archikiến trúc
Trong ví dụ này, chúng tôi sẽ trình bày cách sử dụng kiến trúc MVC trong JSP.
- Chúng tôi lấy ví dụ về một biểu mẫu có hai biến “email” và “password”, đây là lớp xem của chúng tôi.
- Khi người dùng nhập email, mật khẩu và nhấp vào gửi thì hành động sẽ được truyền vào mvc_servlet, trong đó email và mật khẩu được truyền vào.
- Mvc_servlet này là lớp điều khiển. Ở đây, trong mvc_servlet, yêu cầu được gửi đến đối tượng Bean hoạt động như lớp mô hình.
- Giá trị email và mật khẩu được thiết lập vào bean và lưu trữ cho mục đích sau này.
- Từ đậu, giá trị được tìm nạp và hiển thị trong lớp xem.
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>
Giải thích mã:
Xem lớp:
Dòng mã 10-15: Ở đây chúng ta lấy một biểu mẫu có hai trường là tham số “email” và “password” và yêu cầu này cần được chuyển tiếp đến bộ điều khiển Mvc_servlet.java, được truyền trong hành động. Phương pháp mà nó được truyền qua là phương pháp 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);
}
}
Giải thích mã:
Lớp điều khiển
Dòng mã 14:mvc_servlet đang mở rộng HttpServlet.
Dòng mã 26: Vì phương thức được sử dụng là POST do đó yêu cầu sẽ trở thành phương thức doPost của servlet xử lý các yêu cầu và lưu vào đối tượng Bean dưới dạng testobj.
Dòng mã 34: Sử dụng đối tượng yêu cầu, chúng tôi đang đặt thuộc tính là gurubean được gán giá trị testobj.
Dòng mã 35: Ở đây chúng tôi đang sử dụng đối tượng điều phối yêu cầu để chuyển thông báo thành công tới 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";
}
Giải thích mã:
Lớp mô hình:
Dòng mã 7-17: Nó chứa các phương thức lấy và đặt email và mật khẩu là thành viên của lớp Test Bean
Dòng mã 19-20: Nó định nghĩa email và mật khẩu của các thành viên theo kiểu chuỗi trong lớp bean.
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>
Giải thích mã:
Dòng mã 12: chúng ta đang nhận thuộc tính bằng cách sử dụng đối tượng yêu cầu đã được đặt trong phương thức doPost của servlet.
Dòng mã 13: Chúng tôi đang in tin nhắn chào mừng và ID email đã được lưu trong đối tượng bean
Đầu ra:
Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau:
Khi bạn nhấp vào mvc_example.jsp, bạn sẽ nhận được biểu mẫu có email và mật khẩu kèm theo nút gửi.
Sau khi bạn nhập email và mật khẩu vào biểu mẫu và sau đó nhấp vào gửi
Sau khi nhấp vào gửi, đầu ra được hiển thị như bên dưới
Đầu ra:
Khi bạn nhập email và mật khẩu vào màn hình và nhấp vào gửi, thông tin chi tiết sẽ được lưu trong TestBean và từ TestBean, chúng sẽ được lấy trên màn hình tiếp theo để nhận thông báo thành công.
Tổng kết
Trong bài viết này, chúng ta đã tìm hiểu về kiến trúc MVC tức là Model View Controller.
JSP đóng vai trò trình bày dữ liệu và điều khiển. Nó là giao diện giữa mô hình và khung nhìn trong khi mô hình kết nối cả với bộ điều khiển cũng như cơ sở dữ liệu. Logic nghiệp vụ chính có trong lớp mô hình.


