SpringMVC 框架中,DispatcherServlet负责分发请求到控制器Controller 处理。Controller把用户的请求数据通过业务层处理后封装成一个ModelAndView对象,而后再把该对象返回给对应的View进行展现。在SpringMVC 中定义一个Controller是很是简单的,不须要继承特定的类,也不须要实现相关接口,只需使用@Controller 注解在一个类上进行标记便可。而后使用@RequestMapping等一些注解用定义URL 请求和映射,这样Controller 就能被访问了。spring
下面小博老师给你们演示一个Controller定义的小例子:app
@Controller 框架
public class BwfController { spa
@RequestMapping ( "/boweifeng" ) .net
public ModelAndView showView() { code
ModelAndView modelAndView = new ModelAndView(); component
modelAndView.setViewName( "boweifeng" ); 对象
modelAndView.addObject( "addredd" , "上海市云南北路59号15楼" ); 继承
return modelAndView; 接口
}
}
在这个例子中,@Controller 用于标记一个类,使用@Controller标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。
仅仅使用@Controller 标记还不能真正意义上的说它就是SpringMVC 的一个控制器类,由于没有相关配置,Spring 还不能识别它。那么怎么才能让Spring识别它呢?这就须要咱们把这个控制器类交给Spring管理。
两种方式能够把BwfController交给Spring 管理,让它可以识别标记的@Controller 。
1. 在SpringMVC 的配置文件中定义MyController 的bean 对象。
<bean class="com.bwf.controller.BwfController "/>
这句话意味着在spring中手动定义该controller bean。若是controller比较多,这样作会比较麻烦。
2. 在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器。
<context:component-scan base-package = "com.bwf.controller" />
定义了component-scan 后,spring会自动扫描指定包内的类是否有@Controller注解。