使用注解方式進(jìn)行開發(fā)我們需要在Spring MVC配置文件中加入如下配置,它的作用是告訴Spring我們要啟用注解.
<mvc:annotation-driven></mvc:annotation-driven>
并且會(huì)幫我們自動(dòng)注冊(cè)一下Bean
RequestMappingHandlerMapping
BeanNameUrlHandlerMapping
RequestMappingHandlerAdapter
HttpRequestHandlerAdapter
SimpleControllerHandlerAdapter
ExceptionHandlerExceptionResolver
ResponseStatusExceptionResolver
DefaultHandlerExceptionResolver
其中
RequestMappingHandlerMapping 是注解映射器
RequestMappingHandlerAdapter 是注解適配器
使用注解編寫Handler
這里我們還是修改一下我們之前的那個(gè)TestController
package cc.test;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
//使用Controller注解標(biāo)識(shí)一個(gè)控制器
@Controller
public class TestController{
//@RequestMapping實(shí)現(xiàn)對(duì)testMethod方法和url進(jìn)行映射
//注意:@RequestMapping注解中的value值可以隨便指定的但是要有意義,只不過(guò)習(xí)慣寫成方法名而已.
@RequestMapping(value = "testMethod")
public ModelAndView testMethod(){
//例如我們的這個(gè)測(cè)試的Handler是用來(lái)做查詢用戶測(cè)試的
//這里會(huì)調(diào)用service的查詢用戶的功能.
//這個(gè)方法需要返回一個(gè)ModelAndView對(duì)象所以我們創(chuàng)建一個(gè).
ModelAndView modelAndView = new ModelAndView();
//這個(gè)方法相當(dāng)于request的setAttribute()方法.
modelAndView.addObject("key", "value");
//指定視圖
//例如我們?cè)?WEB-INF/jsp/test.jsp頁(yè)面,所以我們的視圖名稱就要寫成如下.
modelAndView.setViewName("/WEB-INF/jsp/test.jsp");
return modelAndView;
}
}
這樣我們就使用注解的方式實(shí)現(xiàn)了一個(gè)Handler,當(dāng)然這個(gè)Handler 中可以有多個(gè)方法,只要按照上面的方式進(jìn)行編寫就可以.
加載Handler
兩種方式
第一種方式就像之前的那樣通過(guò)配置bean的方式進(jìn)行加載.
<bean class="cc.test.TestController" />
bean標(biāo)簽中的name屬性可以去掉,因?yàn)閡rl在Handler中已經(jīng)做過(guò)了.
第二種方式使用組建掃描
<context:component-scan base-package="cc.test"/>
讓Spring掃描我們的Handler的包.