使用注解方式进行开发我们需要在Spring MVC配置文件中加入如下配置,它的作用是告诉Spring我们要启用注解.
<mvc:annotation-driven></mvc:annotation-driven>
并且会帮我们自动注册一下Bean
RequestMappingHandlerMapping
BeanNameUrlHandlerMapping
RequestMappingHandlerAdapter
HttpRequestHandlerAdapter
SimpleControllerHandlerAdapter
ExceptionHandlerExceptionResolver
ResponseStatusExceptionResolver
DefaultHandlerExceptionResolver
其中
RequestMappingHandlerMapping 是注解映射器
RequestMappingHandlerAdapter 是注解适配器
使用注解编写Handler
这里我们还是修改一下我们之前的那个TestController
package cc.test;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
//使用Controller注解标识一个控制器
@Controller
public class TestController{
//@RequestMapping实现对testMethod方法和url进行映射
//注意:@RequestMapping注解中的value值可以随便指定的但是要有意义,只不过习惯写成方法名而已.
@RequestMapping(value = "testMethod")
public ModelAndView testMethod(){
//例如我们的这个测试的Handler是用来做查询用户测试的
//这里会调用service的查询用户的功能.
//这个方法需要返回一个ModelAndView对象所以我们创建一个.
ModelAndView modelAndView = new ModelAndView();
//这个方法相当于request的setAttribute()方法.
modelAndView.addObject("key", "value");
//指定视图
//例如我们在/WEB-INF/jsp/test.jsp页面,所以我们的视图名称就要写成如下.
modelAndView.setViewName("/WEB-INF/jsp/test.jsp");
return modelAndView;
}
}
这样我们就使用注解的方式实现了一个Handler,当然这个Handler 中可以有多个方法,只要按照上面的方式进行编写就可以.
加载Handler
两种方式
第一种方式就像之前的那样通过配置bean的方式进行加载.
<bean class="cc.test.TestController" />
bean标签中的name属性可以去掉,因为url在Handler中已经做过了.
第二种方式使用组建扫描
<context:component-scan base-package="cc.test"/>
让Spring扫描我们的Handler的包.