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 ,…