You are on page 1of 20

Mô hình MVC

Model – View - Controller


The Model-View-Controller
Architecture
• splits an application into three layers:
• the model,
• the view,
• and the controller
• Each of these layers has a very specific
job that it is responsible for and—most
important—is not concerned with how
the other layers do their jobs.
The Model-View-Controller Architecture
The Model
• The model represents core business logic and data
The View
• The view is responsible for
transforming a model or
models into a visual
representation
• Generating HTML to be
rendered in the user’s
browser
The Controller
• Controls the application logic and acts
as the coordinator between the view
and the model.
• Controllers receive input from users via
the view, then work with the model to
perform specific actions, passing the
results back to the view.
Routing
• a pattern-matching system
• the application registers one or more
patterns with the framework’s route
table
• When the routing engine receives a
request at runtime, it matches that
request’s URL against the
URL patterns registered with it
Routing
• Configuring Routes:
• Unique name
• URL pattern
• Defaults
• Constraints
Controller
Spring boot
Spring
• Spring là một Java framework, làm
được đủ mọi thứ. Nó được chia thành
nhiều module, mỗi module làm một
chức năng, ví dụ Spring Core, Web,
Data access, AOP,...
• Spring được xây dựng dựa trên 2 khái
niệm nền tảng là Dependency
injection và AOP (Aspect Oriented
Programming).
Tạo dự án với Spring
• Tạo Maven hoặc Gradle project
• Thêm các thư viện cần thiết
• Tạo XML để cấu hình project, cấu hình các bean
• Code và build thành file WAR
• Cấu hình Tomcat server để chạy được file WAR vừa build
Spring boot
• Auto config: tự động cấu hình thay cho bạn, chỉ cần bắt đầu code và
chạy là được
• Xây dựng các bean dựa trên annotation thay vì XML
• Server Tomcat được nhúng ngay trong file JAR build ra, chỉ cần chạy
ở bất kì đâu java chạy được
Netbean plugin
• NB SpringBoot
Spring MVC
• Spring MVC là framework được thiết kế dành cho xây dựng
ứng dụng nền tảng web.
• Nó tuân theo mô hình MVC (Model-View-Controller)

•Model: là các file POJO, Service, DAO thực


hiện truy cập database, xử lý business
•View: là các file JSP, html…
•Control: là Dispatcher Controller, Handler
Mapping, Controller – thực hiện điều hướn
các request.
Flow trong Spring MVC
• Bất kỳ request nào tới ứng dụng web đều sẽ được gửi
tới Front Controller (Dispatcher Servlet)
• Front Controller sẽ sử dụng Handler Mapping để biết
được controller nào sẽ xử lý request đó
• Controller nhận request, gọi tới các class service thích
hợp để xử lý yêu cầu.
• Sau khi xử lý xong, Controller sẽ nhận được model từ
tầng Service hoặc tầng DAO.
• Controller gửi model vừa nhận được tới Front
Controller (Dispatcher Servlet)
• Dispatcher Servlet sẽ tìm các mẫu view, sử dụng view
resolver và truyền model vào nó.
• View template, model, view page được build và gửi trả
lại Front Controller
• Front Controller gửi một page view tới trình duyệt để
hiển thị nó cho người dùng.
Ưu điểm:
• Các tầng trong Spring MVC độc lập nên việc unit test dễ dàng hơn.
• Phần view có thể tích hợp với nhiều Framework về UI như JSF,
Freemarker, Themeleaf…
• Spring MVC base trên các POJO class nên các hành động của nó khá
đơn giản
• Hỗ trợ cả Annotation và XML config giúp việc phát triển code nhanh hơn
và sạch hơn.
• Cung cấp việc phân chia một cách rõ ràng, linh hoạt giữa controller,
service, data acces layer.
Anomations
• @Controller
• lớp đóng vai trò là Bộ điều khiển của MVC.
Dispatcher Servlet quét các lớp được chú thích với
nó để ánh xạ các yêu cầu web tới các phương thức
được chú thích bằng @RequestMapping.
• @RequestMapping
• ánh xạ các yêu cầu tới các phương thức của bộ điều
khiển. Nó có các thuộc tính khác nhau để khớp theo
URL, phương thức HTTP, tham số yêu cầu, tiêu đề
và loại phương tiện
• Tương tự có các: @GetMapping, @PostMapping,
@PutMapping, @DeleteMapping, @PatchMapping
Anomations
• @ModelAttribute:
- Là tham số của hàm xử lý, trong các phương thức @RequestMapping để
tạo hoặc truy cập một Đối tượng từ mô hình và liên kết nó với yêu cầu thông
qua WebDataBinder.
Anomations
• @ExceptionHandler: Các lớp @Controller và @ControllerAdvice có thể có các phương
thức @ExceptionHandler để xử lý các ngoại lệ từ các phương thức controller
• @NotNull: giá trị không được rỗng.
• @Min: số phải bằng hoặc lớn hơn giá trị được chỉ định.
• @Max: số phải bằng hoặc nhỏ hơn giá trị được chỉ định.
• @Size: kích thước phải bằng giá trị được chỉ định.
• @Pattern: chuỗi tuân theo biểu thức chính quy được chỉ định. Ví dụ như: định dạng
email, password phải có chữ hoa chữ thường ,…

You might also like