Tôi đang bối rối về cách hoạt động của DefaultAnnotationHandlerMapping.Cách DefaultAnnotationHandlerMapping hoạt động
Trong web.xml của tôi, tôi có
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/somePath/someWork</url-pattern>
<url-pattern>/users</url-pattern>
<url-pattern>/user/*</url-pattern>
</servlet-mapping>
Tôi có bộ điều khiển như thế này,
@RequestMapping(value="/user/adduser", method={RequestMethod.POST})
public void addAdmin(@ModelAttribute("myData") myData data) {
System.out.println("We reached adduser controller");
}
Và trong file jsp tôi có
<form:form id="adduser" method="post" action="/user/adduser" commandName="myData">
này không hoạt động . Tôi nhận được lỗi không có bản đồ handler tìm thấy cho "/ adduser" và 404 cho trang "/ user/adduser"
Nhưng trong file .xml nếu tôi đề cập đến
<url-pattern>/user/adduser</url-pattern>
nó hoạt động, hoặc nếu tôi đặt bộ điều khiển như,
@RequestMapping(value="/adduser", method={RequestMethod.POST})
cũng hoạt động. Khi gửi trang, nó sẽ đến đúng bộ điều khiển.
Tôi hiện đang nhầm lẫn cách hoạt động của @ReuqestMapping. Khi một yêu cầu đến như "/ user/adduser" từ nơi nó sẽ bắt đầu tìm kiếm đúng class và đúng method?
Cảm ơn bạn đã trả lời skaffman. Điều này mang lại cho tôi cái nhìn sâu sắc. Một câu hỏi khác có liên quan. Trong môi trường sản xuất, mọi người thực sự thực hiện các ánh xạ như * .do url-pattern>? Tôi đã không thấy bất kỳ ví dụ thực sự nào như thế này. –
kalyan
@ kalyan: '* .do' là một sự nôn nao từ những ngày xưa cũ của Struts. Tuy nhiên, bạn vẫn thấy nó trên các trang web "thực sự". – skaffman