概念
资源
@Controller
public class RestFulController {
//映射访问路径
@RequestMapping("/commit/{p1}/{p2}")
public String index(@PathVariable int p1, @PathVariable int p2, Model model){
int result = p1+p2;
//Spring MVC会自动实例化一个Model对象用于向视图中传值
model.addAttribute("msg", "结果:"+result);
//返回视图位置
return "test";
}
}
在Spring MVC中可以使用 注解,让方法参数的值对应绑定到一个URI模板变量上。实际代码中,若该变量会从前端传值,则必须加注解@PathVariable;若不需要传值,不需要加注解。目的区分该变量是否前端传值。
上面代码请求URL"http://localhost:8080/1/2",网页会输出3.
使用路径变量的好处:
使用method属性指定请求类型
用于约束请求的类型,可以收窄请求范围。指定请求谓词的类型如GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE等
方法级别的注解变体有如下几个: 组合注解
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
@GetMapping
eg:@GetMapping 等价于@RequestMapping(method=RequestMethod.GET) 的一个快捷方式。
//映射访问路径,必须是POST请求
//value和method属性
@RequestMapping(value = "/hello",method = {
RequestMethod.POST}) public String index2(Model model){
model.addAttribute("msg", "hello!");
return "test";
}
我们使用浏览器地址栏进行访问默认是Get请求,会报错405。如果将method改为GET就好了。
@RequestMapping注解用于映射url到控制器类或一个特定的处理程序方法。可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
(1)只注解方法:此时访问URLhttp://localhost:8080 / 项目名 / h1
@Controller
public class TestController {
@RequestMapping("/h1")
public String test(){
return "test";
}
}
(2)同时注解方法和类:URLhttp://localhost:8080 / 项目名/ admin /h1
@Controller
@RequestMapping("/admin")
public class TestController {
@RequestMapping("/h1")
public String test(){
return "test";
}
}
@Controller注解类型用于声明Spring类的实例是一个控制器(SpringIOC还有@Component、@Repository @Service);
Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类,为了保证Spring能找到你的控制器,需要在配置文件中声明组件扫描。
<context:component-scan base-package="com.wang.controller"/>
//@Controller注解的类会自动添加到Spring上下文中
@Controller
public class ControllerTest2{
//映射访问路径
@RequestMapping("/t2")
public String index(Model model){
//Spring MVC会自动实例化一个Model对象用于向视图中传值
model.addAttribute("msg", "ControllerTest2");
//返回视图位置
return "test";
}
}