註解映射器和適配器

在spring3.1之前使用DefaultAnnotationHandlerMapping映射器,AnnotationMethodHandlerAdapter註解適配器

在spring3.1之後使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping 映射器,

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter 註解適配器

建議使用3.1之後的


使用<mvc:annotation-driven></mvc:annotation-driven>這個標籤可以代替上面註解映射器和註解適配器 的配置,而且默認加載很多參數綁定方法,比如json轉換解析器就默認加載了。實際開發一般使用<mvc:annotation-driven></mvc:annotation-driven>。


開發註解Handler

使用@org.springframework.stereotype.Controller表明他是一個控制器。

註解的映射器,適配器


對於註解的Handler可以單個配置

        <bean class="com.ssm.controller.ItemsHandler3" ></bean>

在實際開發中建議使用組件掃描:(可以掃描controller,service。。。)

<context:component-scan base-package="com.ssm.controller"></context:component-scan>


聲明Controller

@org.springframework.stereotype.Controller
public class ItemsHandler3 {
	//@RequestMapping實現對方法和url進行映射,一個方法對應一個url
	//一般建議將url與方法名寫成一樣
	@RequestMapping("/queryItems")
	public  ModelAndView queryItems() throws Exception{
		//調用service 查詢商品列表,這裏使用靜態數據模擬
		ArrayList<Items>list=new ArrayList<Items>();
		list.add(new Items("小米",1244,"性價比最高"));
		list.add(new Items("華爲",3999,"華爲榮耀,你值得擁有"));
		
		ModelAndView modelAndView=new ModelAndView();		
		modelAndView.addObject("list", list);
		modelAndView.setViewName("/items.jsp");
		
		return modelAndView;		
	}
}
這裏的RequestMapping裏的參數,即指url的請求參數。
訪問鏈接:http://localhost:8080/SpringStudy/queryItems.action


第一步:前端控制器接受請求

調用doDispatcher(HttpServletRequest request , HttpServletResponse response){...};

第二步:前端控制器查找Handler

HandlerExecutionChain  getHandler(HttpServletRequest request){...}

第三步:執行Handler,得到執行的結果ModelAndView。

handler.handle(processedRequest,request, mappedHandler.getHandler());

第四步:視圖渲染,將model數據填充到 request 域

試圖解析得到view,然後調用view.render() 即view的渲染方法。

void exposeModelAsRequestAttributes(Map<String,Object> model ,HttpServletRequest request){...} , 然後便是把model中的屬性設置到request中。






發佈了334 篇原創文章 · 獲贊 37 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章