SpringMVC常⽤注解:@Controller注解的详细使⽤⽅法
引⾔
Spring从2.5版本之后开始引⼊注解。开发⼈员可以使⽤丰富的注解例如@Controller、@RestController、@RequestMapping等。@Controller注解⽤来做什么的?
spring ioc注解以前在编写Controller⽅法的时候,需要开发者⾃定义⼀个Controller类实现Controller接⼝,实现handleRequest⽅法返回ModelAndView。并且需要在Spring配置⽂件中配置Handle,将某个接⼝与⾃定义Controller类做映射。
这么做有个复杂的地⽅在于,⼀个⾃定义的Controller类智能处理⼀个单⼀请求。⽽在采⽤@Contoller注解的⽅式,可以使接⼝的定义更加简单,将@Controller标记在某个类上,配合@RequestMapping注解,可以在⼀个类中定义多个接⼝,这样使⽤起来更加灵活。
被@Controller标记的类实际上就是个SpringMVC Controller对象,它是⼀个控制器类,⽽@Contoller注解在
org.springframework.stereotype包下。其中被@RequestMapping标记的⽅法会被分发处理器扫描识别,将不同的请求分发到对应的接⼝上。
Spring如何通过注解注⼊?
不过⼤家仔细想⼀下,为什么打上注解了就能实现接⼝功能了呢?换句话说,Spring怎么样到开发者⾃定义的Controller把对应的请求分发到对应的⽅法上呢?
⾸先,要在Spring配置⽂件的头⽂件中引⼊spring-context。
其次,使⽤<context:component-scan>元素启动“包扫描”功能。
例如<context:component-scan base-package="ller"/>
base-package是值是包的路径。意思就是,启动了报扫描功能,将ller这个包下以及⼦包下的所有类扫描⼀遍,将标记有@Controller、@Service、@repository、@Component等注解的类注⼊到IOC容器中,作为Spring的Bean来管理。
这样,Spring就能到Controller类,通过@RequestMapping注解处理对应的请求。
@Controller使⽤样例
@Controller
public class TestController {
private static final Log logger  = Log(TestController.class);
@RequestMapping(value = "/hello")
public ModelAndView hello () {
logger.info("hello() ⽅法被调⽤");
ModelAndView mv = new ModelAndView();
mv.addObject("message", "Hello, Ma Yuzhe!");
mv.setViewName("/WEB-INF/views/hello.jsp");
return mv;
}
}
⽤于参数绑定的常⽤注解
在SpringMVC中⽤于参数绑定的注解还有很多,它们都在org.springframework.web.bind.annotation包下。
● 处理request body的常⽤注解:@RequestParam, @RequestBody
● 处理request uri的常⽤注解:@PathVariable
● 处理request header的常⽤注解:@RequestHeader, @CookieValue
● 处理attribute的常⽤注解:@SessionAttributes, @ModelAttribute
有关上述注解,会在接下来的博客中详细介绍。
本⽂内容参考:《Spring + Mybatis企业应⽤实战》.疯狂软件 著

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。