Trong mô hình MVC, controller là nơi nhận request từ người dùng, xử lý request, xây dựng dữ liệu cho view (model) và chọn view để trả lại kết quả của cho người dùng. Trong bài viết này, chúng ta sẽ cùng tìm hiểu tổng quan về controller trong Spring MVC và các thành phần của nó nhé các bạn!
Tạo project
Để tiện tìm hiểu, mình sẽ tạo một project Spring MVC mới, bạn nào chưa biết cách tạo thì có thể xem hướng dẫn của mình ở đây nhé!
Project mình tạo có cấu trúc như sau:
Để chạy project này, các bạn có thể tham khảo tại đây.
Kết quả:
Các bạn có tự hỏi làm sao khi chúng ta request đến trang chủ, ứng dụng web của chúng ta có thể trả về kết quả như thế không? Câu trả lời đó là nhờ controller trong Spring MVC đó các bạn!
Trong project mà mình vừa tạo thì lớp HomeController với nội dung như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package com.huongdanjava.springmvc; import java.text.DateFormat; import java.util.Date; import java.util.Locale; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * Handles requests for the application home page. */ @Controller public class HomeController { private static final Logger logger = LoggerFactory.getLogger(HomeController.class); /** * Simply selects the home view to render by returning its name. */ @RequestMapping(value = "/", method = RequestMethod.GET) public String home(Locale locale, Model model) { logger.info("Welcome home! The client locale is {}.", locale); Date date = new Date(); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); String formattedDate = dateFormat.format(date); model.addAttribute("serverTime", formattedDate); return "home"; } } |
chính là một controller trong Spring MVC. Nhiệm vụ của lớp này là nhận request từ người dùng đến trang chủ, xử lý request và trả kết quả về cho người dùng.
Các thành phần của controller trong Spring MVC
Nhìn vào lớp HomeController trong project mà chúng ta vừa tạo ở trên, các bạn có thể thấy một controller trong Spring MVC có các thành phần sau:
- Một annotation @Controller được khai báo cùng với định nghĩa của lớp HomeController.
- Một annotation @RequestMapping được khai báo cùng với định nghĩa của phương thức home(). Trong annotation này, chúng ta có thuộc tính value để định nghĩa request URL và thuộc tính method để định nghĩa HTTP request method.
- Phương thức home() trong lớp HomeController đang trả về một chuỗi “home”, chuỗi này định nghĩa tên view sẽ được dùng để hiển thị kết quả request cho người dùng.
- Trong phương thức home() cũng xây dựng một biến model lưu trữ những dữ liệu cần thiết cho view “home” sử dụng.
- Phương thức home() cũng đang sử dụng biến locale của đối tượng Locale để lấy dữ liệu về ngày giờ của server đang chạy web của chúng ta.
Trên đây là các thành phần cơ bản của một controller trong Spring MVC.
Thật ra, Spring MVC còn cung cấp cho chúng ta một cách khác để định nghĩa một controller, đó là sử dụng interface org.springframework.web.servlet.mvc.Controller, nhưng ở đây mình chỉ giới thiệu với các bạn cách phổ biến nhất, dễ dùng và dễ hiểu nhất: sử dụng annotation org.springframework.stereotype.Controller.
Nam
Sao project em tạo ra ko có file controller thế anh zai
Mixigaming
Hướng dẫn chi tiết hơn đi. Khó hiểu quá
Khanh Nguyen
🙂 Không hiểu chỗ nào thì hỏi bạn nhé!
Độ
Cảm ơn anh về bài viết hay này
Thanh
Các bài viết của anh rất hay <3 tks a