【SSM-SpringMVC框架】非註解的處理器介面卡和對映器
1.非註解的處理器對映器:
1.處理器對映器:(HandlerMapping)
處理器對映器負責根據request請求找到對應Handler處理器及Intercepter攔截器,將他們封裝在HandlerExecutionChain物件中給前端控制器中返回。
1. org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping:
BeanNameUrlHandlerMapping處理器對映器,根據請求的url與spring容器中定義的bean的name進行匹配,從而從spring容器中找到bean的例項。
<!—beanName Url對映器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
另一個處理器介面卡:
2. org.springframework.web.servlet.handler.SimpleUrlHandlerMapping:
SimpleUrlHandlerMapping處理器介面卡,他可以將url和處理器bean的id進行統一配置。
<!—簡單url對映 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/items1.action">controller的bean id</prop> <prop key="/items2.action">controller的bean id</prop> </props> </property> </bean>
2.非註解的處理器介面卡:
2.處理器介面卡(HandlerAdapter):
HandlerAdapter會根據介面卡介面對後端控制器進行包裝(適配),包裝後即可對處理器進行執行,通過擴充套件處理器介面卡可執行多種型別的處理器。這裡使用了介面卡設計模式。
1.org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter:
簡單的處理器介面卡,所有實現了org.springframework.web.servlet.mvc.Controller介面的bean,都通過此介面卡進行適配執行:
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
2.org.springframework.web.HttpRequestHandlerAdapter:
HttpRequestHandlerAdapter,http請求處理器介面卡,所有實現了org.springframework.web.HttpRequestHandler介面的bean,通過此介面卡進行適配,執行。
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
handler開發:
public class ItemList2 implements HttpRequestHandler {
@Override
public void handleRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 商品列表
List<Items> itemsList = new ArrayList<Items>();
Items items_1 = new Items();
items_1.setName("聯想筆記本");
items_1.setPrice(6000f);
items_1.setDetail("ThinkPad T430 聯想膝上型電腦!");
Items items_2 = new Items();
items_2.setName("蘋果手機");
items_2.setPrice(5000f);
items_2.setDetail("iphone5 蘋果手機!");
itemsList.add(items_1);
itemsList.add(items_2);
// 填充資料
request.setAttribute("itemsList", itemsList);
// 檢視
request.getRequestDispatcher("/WEB-INF/jsp/order/itemsList.jsp").forward(request, response);
}
}
從上邊裡可以看出,此介面卡的handlerRequest方法沒有返回ModelAndView,可通過response修改響應內容,比如json,