版权声明:本站所提供的文章资讯、软件资源、素材源码等内容均为本作者提供、网友推荐、互联网整理而来(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考,如有侵犯您的版权,请联系我,本作者将在三个工作日内改正。 https://blog.csdn.net/weixin_42323802/article/details/83931166
@restcontroller
*源码如下:其包含@Controller 、@ResponseBody *
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
@AliasFor(
annotation = Controller.class
)
String value() default "";
}
@controller 源码如下:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
@AliasFor(
annotation = Component.class
)
String value() default "";
}
区别:
@restcontroller 返回的为 json格式的数据;
@controller 返回的是字符串;使用 @controller要在前端页面展示数据需要配合html、jsp等视图渲染到前端, 如下controller层使用@controller注释方式;
/**
* @auther SyntacticSugar
* @data 2018/11/9 0009下午 10:50
*/
@Controller
@RequestMapping(method = RequestMethod.GET, value = "/")
public String getuser(Model model) throws IOException {
model.addAttribute("name",bob);
model.addAttribute("sex",boy);
return "user";//user是模板名
}
返回的是user字符串;
数据需要配合jsp、或者html ,通过视图解析器 在前端展示;
只有在user.jsp 页面 进行展示,否则仅仅是 user字符串;但是,若是使用 @RestController 返回的是 user对象的 json 格式;如下图所示:
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div>
<p>"${name}"</p>
<p>"${sex}"</p>
</div>
</body>
</html>
问题描述:
springboot 中在controller 层,添加@controller 注解, 请求无效; 跟换@RestController 注解,再次访问可以了,页面有显示 json格式的数据;
controller 层如下:
/**
* @auther SyntacticSugar
* @data 2018/11/10 0010上午 11:22
*/
// @RequestMapping("user") 对外开放一个 user
//@Controller 和 @RestController
@RestController
@RequestMapping("user")
public class UserController {
//
@Autowired
private UserService userservice;
//@Bean bug 一次 ,不需要@Bean注入
// @getmapping 作用于某一个方法上
@GetMapping("/{id}")
public User queryById(@PathVariable("id") Long id) {
return this.userservice.queryById(id);
}
}
@PathVariable 注释,是从网址栏中获取数据,即从URL中获取数据;
上图中的 URL 为 localhost/user/{id} ;使用该注解获取到 Long id 的值作为参数传递;
查看下 @PathVariable的源码:
*就是给 path绑定 变量的; *
springMVC中获取浏览器的参数的注释有 3个:
@requestparm, @requestbody和@pathvariable ,只有@pathvariable是获取path的参数;@requestparm, @requestbody是由浏览器post提交参数;