SpringMVC 框架中俏讹,DispatcherServlet負(fù)責(zé)分發(fā)請求到控制器Controller 處理。Controller把用戶的請求數(shù)據(jù)經(jīng)過業(yè)務(wù)層處理后封裝成一個(gè)ModelAndView對象董济,然后再把該對象返回給對應(yīng)的View進(jìn)行展示。在SpringMVC 中定義一個(gè)Controller是非常簡單的要门,不需要繼承特定的類虏肾,也不需要實(shí)現(xiàn)相關(guān)接口,只需使用@Controller 注解在一個(gè)類上進(jìn)行標(biāo)記即可欢搜。然后使用@RequestMapping等一些注解用定義URL 請求和映射封豪,這樣Controller 就能被訪問了。
下面小博老師給大家演示一個(gè)Controller定義的小例子:
@Controller
public class BwfController {
@RequestMapping ( "/boweifeng" )
public ModelAndView showView() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName( "boweifeng" );
modelAndView.addObject( "addredd" , "上海市云南北路59號15樓" );
return modelAndView;
}
}
在這個(gè)例子中炒瘟,@Controller 用于標(biāo)記一個(gè)類吹埠,使用@Controller標(biāo)記的類就是一個(gè)SpringMVC Controller 對象。分發(fā)處理器將會(huì)掃描使用了該注解的類的方法,并檢測該方法是否使用了@RequestMapping 注解藻雌。@Controller 只是定義了一個(gè)控制器類雌续,而使用@RequestMapping 注解的方法才是真正處理請求的處理器。
僅僅使用@Controller 標(biāo)記還不能真正意義上的說它就是SpringMVC 的一個(gè)控制器類胯杭,因?yàn)闆]有相關(guān)配置驯杜,Spring 還不能識別它。那么怎么才能讓Spring識別它呢做个?這就需要我們把這個(gè)控制器類交給Spring管理鸽心。
兩種方式可以把BwfController交給Spring 管理,讓它能夠識別標(biāo)記的@Controller 居暖。
1.?在SpringMVC 的配置文件中定義MyController 的bean 對象顽频。
這句話意味著在spring中手動(dòng)定義該controller bean。如果controller比較多太闺,這樣做會(huì)比較麻煩糯景。
2.?在SpringMVC 的配置文件中告訴Spring 該到哪里去找標(biāo)記為@Controller 的Controller控制器。
定義了component-scan 后省骂,spring會(huì)自動(dòng)掃描指定包內(nèi)的類是否有@Controller注解蟀淮。