一、写在前面
在Spring2.5之前,只能使用controller
接口实现来完成一个控制器,每写一个控制器都需要重新implements
一个controller
,在Spring2.5之后,新增基于注解的控制器以及其他注解开发,极大减少了代码量。
二、@Controller
1、基于该注解的类为一个控制器,不需要再实现controller
接口,加上了@Controller
的类会自动被Spring托管(需要配置扫描),如果该类有String
返回值,并且有对应的页面可以跳转,那么会自动被视图解析器解析。
2、在配置该注解后需要指定扫描包类路径
<context:component-scan base-package="cn.kexing.controller"></context:component-scan>
三、@RequestMapping
Spring
通过@Controller
找到对应的控制器后,还需要知道控制器内的每一个请求如何处理,@RequestMapping
可以映射在类上或方法上、映射在类上后每次请求该类对应的方法时都需要加上类路径,映射在方法上只需要指定方法路径即可调用相应的功能。
package cn.kexing.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/SpringMVC05")
public class HelloController {
//@RequestMapping既可以加在方法上也可以加在类上,代表url路径
@RequestMapping("/hello")
public String Hello(Model model){
model.addAttribute("msg","helloController!");
return "helloController";
}
}
请求HelloController方法的url为http://localhost:8080/SpringMVC05_war_exploded/SpringMVC05/hello