MVC là gì?
MVC là một kiến trúc phân tách logic nghiệp vụ, bản 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 View
- C là viết tắt của controller.
MVC là một cách có hệ thống để sử dụng ứng dụng nơi luồng bắt đầu từ lớp xem, nơi yêu cầu được đưa ra và xử lý trong lớp bộ điều khiển và được gửi đến lớp mô hình để chèn dữ liệu và nhận lại thông báo thành công hoặc thất bại.
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 và 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ó.
Lớp xem:
- Đây là một lớp trình bày.
- Nó bao gồm HTML, JSP, v.v. vào trong đó.
- 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 lấy từ bộ điều khiển, lần lượt lấy dữ liệu từ các lớp lớp mô hình.
- Lớp chế độ 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 và thực hiện xác nhận 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à khi yêu cầu được xử lý, nó sẽ gửi lại bộ điều khiển với thông tin cần thiết và được hiển thị tương ứng bằng khung nhìn.
Sơ đồ được trình bày dưới đây:
Ưu điểm của MVC là:
- Dễ bảo trì
- Dễ dàng mở rộng
- Dễ dàng kiểm tra
- Kiểm soát điều hướng là tập trung
Ví dụ về kiến trúc MVC
Trong ví dụ này, chúng tôi sẽ giới thiệu cách sử dụng kiến trúc MVC trong JSP.
- Chúng tôi đang lấy ví dụ về một biểu mẫu có hai biến "email" và "mật khẩu" là lớp xem của chúng tôi.
- Khi người dùng nhập email và mật khẩu và nhấp vào gửi thì hành động sẽ được chuyển vào mvc_servlet nơi email và mật khẩu được chuyển.
- 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 đặt vào bean và được lưu trữ cho các mục đích khác.
- Từ bean, 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"%>Ví dụ về MVC Guru
Giải thích mã:
Lớp xem:
Dòng mã 10-15: Ở đây chúng ta đang lấy một biểu mẫu có hai trường là tham số "email" và "mật khẩu" và yêu cầu này cần phải được chuyển tiếp đến một bộ điều khiển Mvc_servlet.java, được chuyển vào hoạt động. được thông qua là phương thức POST.
Mvc_servlet.java
gói demo;nhập java.io.IOException;nhập javax.servlet.RequestDispatcher;nhập javax.servlet.ServletException;nhập javax.servlet.http.HttpServlet;nhập javax.servlet.http.HttpServletRequest;nhập javax.servlet.http.HttpServletResponse;/ *** Lớp triển khai Servlet Mvc_servlet* /public class Mvc_servlet mở rộng HttpServlet {tư tĩnh cuối cùng dài serialVersionUID = 1L;/ *** @see HttpServlet # HttpServlet ()* /public Mvc_servlet () {siêu();// VIỆC CẦN LÀM Sơ khai của hàm tạo được tạo tự động}được bảo vệ void doPost (yêu cầu HttpServletRequest, phản hồi HttpServletResponse) ném ServletException, IOException {// VIỆC CẦN LÀM Sơ khai phương thức được tạo tự độngChuỗi email = request.getParameter ("email");Chuỗi mật khẩu = request.getParameter ("mật khẩu");TestBean testobj = new TestBean ();testobj.setEmail (email);testobj.setPassword (mật khẩu);request.setAttribute ("gurubean", testobj);RequestDispatcher rd = request.getRequestDispatcher ("mvc_success.jsp");rd.ntic (yêu cầu, phản hồi);}}
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 nên yêu cầu đi vào 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ị là 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 đến mvc_success.jsp
TestBean.java
gói demo;nhập java.io.Serializable;lớp công khai TestBean triển khai Serializable {public String getEmail () {trả lại email;}public void setEmail (Chuỗi email) {this.email = email;}public String getPassword () {trả lại mật khẩu;}public void setPassword (String password) {this.password = mật khẩu;}private String email = "null";mật khẩu chuỗi riêng = "null";}
Giải thích mã:
Lớp mô hình:
Dòng mã 7-17: Nó chứa trình nhận và thiết lập email và mật khẩu là thành viên của lớp Test Bean
Dòng mã 19-20: Nó xác định email và mật khẩu của thành viên 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"%>Thành công của Guru <%TestBean testguru = (TestBean) request.getAttribute ("gurubean");out.print ("Chào mừng," + testguru.getEmail ());%>
Giải thích mã:
Dòng mã 12: chúng tôi đ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 thông báo 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 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 với 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ư dưới đây
Đầ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 sau đó, các chi tiết được lưu trong TestBean và từ TestBean, chúng sẽ được tìm nạp trên màn hình tiếp theo để nhận được thông báo thành công.
Tóm lược:
Trong bài 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à bộ điều khiển. Nó là một 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 hiện diện trong lớp mô hình.