@Controller
这是一个很常见的注解了,它标在类上:
@Controller
public
class
UsersController {
}
表明该类是一个前端控制器,它提供接口来处理用户请求。
@RequestMapping
该注解是用来映射URL 的,它可以了, 现在类上,也可以出现在类中的方法上:
@Controller
@RequestMapping
(
"/user"
)
public
class
UsersController {
@RequestMapping
(
"/index"
)
public
String index(){
return
"index.html"
;
}
}
写在类上相当于一个公共的前缀,后面方法的映射路径中前缀都有它。上面的前缀为 /
user/index
这个注解有很多属性:
value
像上面那样不写出属性,默认就是value ,它除了完全写出URL路径之外,还可以用一些简单的表达式来支持某种样式的URL以达到通用的目的。
如@RequestMapping(value="/user/{page}.html"),这是用在方法上的注解, page为该方法入参。如page=index,那得到的URL就是/user/index.html 。
method
该属性是用来映射对应HTTP的请求方法的,通常的HTTP请求方法有:
GET ,用来获取URL 对应的内容。
POST ,用来向服务器提交信息。
HEAD ,同GET ,但不返回消息体,常用于返回URL对应的元信息,如过期时间等。
PUT ,同POST ,向服务器提交信息,类似更新,而POST 类似新增。
DELETE ,删除对应资源信息。
PATCH ,类似PUT,表示信息局部更新。
上面的方法都有对应简化后的@RequestMapping:
@GetMapping;
@PostMapping;
@PutMapping;
@DeleteMapping;
@PatchMapping.
@GetMapping
(
"/index"
)
public
String index(){
return
"index.html"
;
}
consumes
consumes属性是用来表示Content-Type 媒体类型的。
@
GetMapping
(value=
"/index"
, consumes="application/json"
)
public
String index(){
return
"index.html"
;
}
方法参数
Spring 的Controller 方法可接受的参数类型是很多的,比如Spring MVC 中的ModelAndView 。
@PathVariable :将URL中的参数值映射到方法参数中。
@
GetMapping
(value=
"/index"
,
consumes="application/json"
)
public
String index( @PathVariable String page , @PathVariable Integer type){
return
"index.html"
;
}
Mode:Spring 中通用的MVC模型。
ModelAndView:包含模型和视图路径的对象。
JavaBean : JavaBean 对象。
@RequestBody :自动将请求内容转为指定的对象,默认是使用HttpMessageConverters 转化。
MultipartFile:文件上传对象。
@ModelAttribute :该注解可以使变量成为Model 的一个属性。
除此之处还有很多其他的属性。