在SpringMVC 中,控制器Controller 負(fù)責(zé)處理由DispatcherServlet 分發(fā)的要求,它把用戶要求的數(shù)據(jù)經(jīng)過業(yè)務(wù)處理層處理以后封裝成1個Model ,然后再把該Model 返回給對應(yīng)的View 進(jìn)行展現(xiàn)。在SpringMVC 中提供了1個非常簡便的定義Controller 的方法,你無需繼承特定的類或?qū)崿F(xiàn)特定的接口,只需使用@Controller 標(biāo)記1個類是Controller ,然后使用@RequestMapping 和@RequestParam 等1些注解用以定義URL 要求和Controller 方法之間的映照,這樣的Controller 就可以被外界訪問到。另外Controller 不會直接依賴于HttpServletRequest 和HttpServletResponse 等HttpServlet 對象,它們可以通過Controller 的方法參數(shù)靈活的獲得到。為了先對Controller 有1個初步的印象,以下先定義1個簡單的Controller下載 :
在上面的示例中,@Controller 是標(biāo)記在類MyController 上面的,所以類MyController 就是1個SpringMVC Controller 對象了,然后使用@RequestMapping(“/showView”) 標(biāo)記在Controller 方法上,表示當(dāng)要求/showView.do 的時候訪問的是MyController 的showView 方法,該方法返回了1個包括Model 和View 的ModelAndView 對象。這些在后續(xù)都將會詳細(xì)介紹。
@Controller 用于標(biāo)記在1個類上,使用它標(biāo)記的類就是1個SpringMVC Controller 對象。分發(fā)處理器將會掃描使用了該注解的類的方法,并檢測該方法是不是使用了@RequestMapping 注解。@Controller 只是定義了1個控制器類,而使用@RequestMapping 注解的方法才是真正處理要求的處理器,這個接下來就會講到。
單單使用@Controller 標(biāo)記在1個類上還不能真正意義上的說它就是SpringMVC 的1個控制器類,由于這個時候Spring 還不認(rèn)識它【下載地址】 。那末要如何做Spring 才能認(rèn)識它呢?這個時候就需要我們把這個控制器類交給Spring 來管理。拿MyController 來舉1個例子
這個時候有兩種方式可以把MyController 交給Spring 管理,好讓它能夠辨認(rèn)我們標(biāo)記的@Controller 。
第1種方式是在SpringMVC 的配置文件中定義MyController 的bean 對象。
第2種方式是在SpringMVC 的配置文件中告知Spring 該到哪里去找標(biāo)記為@Controller 的Controller 控制器。