2011-10-24 34 views

Trả lời

8

Bắt đầu here và xem điều đó có hữu ích hay không; nếu không, hãy hỏi một câu hỏi cụ thể hơn. Ngoài ra, this section tài liệu Spring thảo luận về các bộ điều hợp mặc định và cách chúng liên quan đến cấu hình chú thích.

Một thời gian ngắn, bộ điều hợp xử lý quyết định bộ điều khiển (và phương thức nào) để gọi yêu cầu.

+0

Liên kết bị hỏng. – Vishnu

+0

@Vishnu Những điều thay đổi trong sáu năm tôi đoán. –

2

A HandlerMapping chỉ cần ánh xạ phương thức tới URL. Hầu hết người mới bắt đầu không sử dụng trực tiếp đối tượng này, nhưng thay vào đó hãy sử dụng số RequestMapping. Kiểu trả về của phương thức được ánh xạ (thường) xác định khung nhìn SpringMVC sẽ sử dụng để trả về một phản hồi.

Thí dụ, RequestMapping sau sẽ tạo ra một HandlerMapping cho các yêu cầu GET để "/" hoặc "/ home" để gọi phương pháp này:

@RequestMapping(value={"/", "/home"}, method=RequestMethod.GET) 
public String getHome() { 
    return "homepage"; 
} 

Phương pháp này trả về một tên chuỗi của một quan điểm, mà sẽ thường được giải quyết thành "/WEB-INF/views/homepage.jsp" (nhưng điều đó phụ thuộc vào ViewResolver tất nhiên)

Chỉ cần một fyi để bắt đầu: bạn có thể thêm các đối tượng khác nhau mà bạn có thể cần làm tham số cho phương pháp (như Locale, HttpServletRequest, v.v.) Xem javadoc RequestMapping để biết thêm thông tin.

+1

Ông hỏi về HandlerAdapter, bạn đã giải thích HandlerMapping –

9

A HandlerMapping ánh xạ phương thức tới URL, do đó, DispatcherServlet biết phương thức nào cần được gọi bởi một yêu cầu cụ thể. Sau đó, DispatcherServlet sử dụng một số HandlerAdapter để gọi phương thức.

Tại sao DispatcherServlet không gọi phương thức trực tiếp?

Vì có nhiều cách để gọi phương thức, như chú thích, xml, v.v. HandlerAdapter tách cặp DispatcherServlet và các tác vụ được gọi.

3

Bạn có thể tìm Bộ điều hợp trong HandlerAdapter và phần tên đó đến từ mẫu Bộ điều hợp. Adapter giống như một cầu nối giữa hai đối tượng và HandlerAdapter là một cầu nối giữa đối tượng xử lý và servlet dispatcher.

Như bạn có thể thấy từ mã nguồn HandlerAdapter dưới đây được lấy từ tài liệu Spring, có một phương thức, phương thức xử lý với kiểu trả về ModelAndView. Mỗi HandlerAdapter sẽ thực hiện phương thức này để ủy nhiệm các đối tượng xử lý HttpServletRequest và HttpServletResponse cho đối tượng xử lý để đối tượng xử lý sẽ thực thi logic ứng dụng bằng cách sử dụng HttpServletRequest/Response này.

public interface HandlerAdapter { 

    //Check if controller is supported 
    boolean supports(Object handler); 

    //handle request 
    ModelAndView handle(HttpServletRequest rqst, 
         HttpServletResponse rsp, 
         Object handler) throws Exception; 

Thực thi logic ứng dụng này tạo mô hình và chế độ xem. Khung nhìn có thể ở dạng dạng xem của đối tượng String hoặc View. Mô hình giữ dữ liệu sẽ được sử dụng để hiển thị chế độ xem. HandlerAdapter sẽ bao bọc mô hình và xem trong đối tượng ModelAndView. Đó là công việc servatcher dispatcher để xử lý đối tượng ModelAndView.

Điều phối viên servlet không biết về đối tượng xử lý và được giải phóng khỏi xử lý trực tiếp logic ứng dụng. Đối tượng handler cũng giảm bớt việc chuyển đổi mô hình và xem thành đối tượng ModelAndView vì HandlerAdapter sẽ thực hiện công việc chuyển đổi đó.

Các vấn đề liên quan