Spring中的@Controller和 @RestController 的区别以及@ReqeustMapping的作用
2019-01-15 16:47 沁霖 阅读(943) 评论(0) 编辑 收藏 举报一、@Controller和 @RestController 的共同点:
1.都是加在类级别上的
2. 都可以处理Http请求
二、@Controller 和 @RestController 的区别
@RestController 是 @Controller 和 @ResponseBody 的结合体
以上代码等同于如下
图2中的 @ResponseBody 是和 @Controller 一起针对整个类使用的,也可以把 @ResponseBody 写在类中的所有方法上,如下代码:
三、 RequestMapping 的使用
@RequestMapping 配置url 映射,既可以作用在控制器的某个方法上,也可以作用在控制器的类上。
1.在控制器的某个方法上添加注解@RequestMapping 时,表示只作用在该方法上,如下图1
2.即在控制器的类上添加注解@RequestMapping,又在控制器的某个方法上添加注解,表示对方法的补充和声明。类上的注解是针对整个类的,也就是说是针对类中所有的方法的
ps:2.不能只在控制器的类上添加注解@RequestMapping ,否则会出现404报错
例子一:@RequestMapping 注解只作用在方法sayHello 上
在本地 http://localhost:8080/hello 后的到的结果为:hello world
例子二:@Requestapping 注解即作用在方法sayHello上,又添加在类上
1.本地执行: http://localhost:8080/home ,结果如下图
2.本地执行: http://localhost:8080/home/hello ,结果如下图
例子3: 在同一个类中的不同方法上添加 @RequestMapping
执行:http://localhost:8080/hello 得到的结果如下:
执行:http://localhost:8080/hi 得到的结果如下:
例子4:在类和多个方法上均添加 @RequestMapping 注解
执行 http://localhost:8080/home ,得到的结果为:404
执行 http://localhost:8080/home/hello ,得到的结果为:
执行 http://localhost:8080/home/hi , 得到的结果为: