1. 程式人生 > >【SSM-SpringMVC框架】非註解的處理器介面卡和對映器

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