Professional Documents
Culture Documents
Model View Controller
Model View Controller
💡 Kiến trúc MVC (Model-View-Controller) là một mô hình phát triển phần mềm
được sử dụng rộng rãi trong việc phát triển ứng dụng web. Mô hình này tách
biệt phần dữ liệu (Model), giao diện người dùng (View) và logic xử lý
(Controller) của ứng dụng.
2. View: Đại diện cho giao diện người dùng, nơi mà dữ liệu được hiển thị và tương tác
với người dùng. View có thể là các trang HTML, template hoặc các thành phần giao
diện khác. Nó không nên chứa logic xử lý phức tạp và chỉ nên biểu diễn dữ liệu
được cung cấp bởi Model.
3. Controller: Đại diện cho logic xử lý và điều khiển luồng của ứng dụng. Nó nhận lệnh
từ người dùng thông qua View và sau đó tương tác với Model để cập nhật dữ liệu
hoặc thực hiện các thao tác xử lý yêu cầu. Sau khi hoàn thành, Controller sẽ cập
nhật lại View để hiển thị kết quả cho người dùng.
2. Tính mô-đun hóa: Kiến trúc MVC cho phép phân chia ứng dụng thành các thành
phần độc lập, giúp giảm sự phụ thuộc giữa các thành phần và tăng khả năng tái sử
dụng code.
3. Đồng thời phát triển: Với MVC, các thành viên của nhóm phát triển có thể làm việc
song song trên các thành phần khác nhau của ứng dụng mà không ảnh hưởng đến
nhau.
2. Khó khăn trong việc hiểu và học: Đối với các lập trình viên mới, việc hiểu và học
kiến trúc MVC có thể đòi hỏi thời gian và nỗ lực, đặc biệt là để hiểu rõ cách mà các
thành phần tương tác với nhau.
Khi nào sử dụng kiến trúc MVC: Kiến trúc MVC được sử dụng
trong các ứng dụng web nơi phân chia rõ ràng giữa dữ liệu, giao
diện người dùng và logic xử lý là quan trọng. Đây là một mô hình
phù hợp cho các dự án có quy mô lớn hoặc khi có sự tham gia của
nhiều lập trình viên. Nó giúp tăng tính sắp xếp, dễ dàng bảo trì và
phát triển ứng dụng.
1. Model: Tạo một lớp SanPham để đại diện cho dữ liệu sản phẩm:
// Getter và setter
}
@Controller
@RequestMapping("/sanpham")
public class SanPhamController {
@Autowired
private SanPhamService sanPhamService;
@GetMapping("/{id}")
public String getSanPham(@PathVariable int id, Model model) {
SanPham sanPham = sanPhamService.getSanPhamById(id);
model.addAttribute("sanPham", sanPham);
return "sanpham";
}
@PostMapping("/")
public String createSanPham(@ModelAttribute SanPham sanPham) {
sanPhamService.createSanPham(sanPham);
return "redirect:/sanpham";
}
// Các phương thức xử lý khác: cập nhật, xóa sản phẩm, v.v.
}
Trong ví dụ trên, SanPhamController xử lý các yêu cầu từ người dùng, gọi các phương
thức từ SanPhamService để thực hiện logic nghiệp vụ liên quan đến sản phẩm. Kết
quả sau đó được trả về View để hiển thị thông tin sản phẩm cho người dùng.