@RestController 和 @Controller 的区别[通俗易懂]

@RestController 和 @Controller 的区别[通俗易懂]@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面理解下面的注解哦。@ResponseBody表示该方法的返回结果直接写入HTTPrespons…

大家好,又见面了,我是你们的朋友全栈君。

@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

理解下面的注解哦。

@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。

 

撸代码:

//@RestController
@Controller
@RequestMapping("falarmUser")
public class FAlarmUserController {

    private static final Logger logger = LoggerFactory.getLogger(FAlarmUserController.class);

    @Autowired
    private FAlarmUserService fAlarmUserService;

    /**
     * 添加用户
     * @param userEntity
     * @return
     */
    @PostMapping("addUser")
    public Object addUser(@RequestBody FAlarmUserEntity userEntity){
        logger.info("添加成员的信息 : "+userEntity.toString());
        Response res = new Response();
        res = fAlarmUserService.addUser(userEntity);
        return res;
    }

}

Response 类:

@JsonInclude(value = JsonInclude.Include.NON_EMPTY)
public class Response implements Serializable {

    private static final long serialVersionUID = 1L;

    private Integer code;

    private Object data;

    private String message;

    public Response() {
        super();
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

如果是用@RestController ,请求之后返回的结果如下。

@RestController 和 @Controller 的区别[通俗易懂]

如果使用 @Controller,返回结果 如下;

@RestController 和 @Controller 的区别[通俗易懂]

@Controller 注解不能将结果写入到  HTTP response body 中,因而无法正常显示。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148207.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • jvm怎么加载类_jvm类加载器

    jvm怎么加载类_jvm类加载器为什么要自定义加载器如何实现自定义加载器使用自定义加载器的场景

  • 线程的join方法

    线程的join方法join()方法的作用就是让主线程等待子线程执行结束之后再运行主线程。下面示例中t2为主线程,需要等待子线程t1执行完成再执行使用场景,线程2依赖于线程1执行的返回结果在线程2中调用线程1的join方法,即把cpu资源让给线程1publicstaticvoidmain(String[]args)throwsException{Threadt1=newThread(()->{try{T.

  • hexo latex 换行 多行公式 终极解决方案

    hexo latex 换行 多行公式 终极解决方案hexo的LaTeX可算把我给折腾死了。。。问题:多行公式无法显示(hexo-renderer-marked,mathjax)看到网上说是因为渲染引擎把\\渲染成\,然后才交给mathjax渲染公式都说把hexo-renderer-marked换成hexo-renderer-kramed,然后再node_modules/kramed/lib/rules/inline.js里修改escape项,照做了,确实解决了问题,但是却出现了新的问题:复杂公式显示错乱,遂放弃。又看到在node_modules/m

  • Facebook时序预测工具Prophet实战分析

    Facebook时序预测工具Prophet实战分析引言去年Facebook开源了一套时序预测工具叫做Prophet。Prophet是一个预测时间序列数据的模型。它基于一个自加性模型,用来拟合年、周、季节以及假期等非线性趋势。它在至少有一年历史数据的日常周期性数据,效果最好。Prophet对缺失值,趋势的转变和大量的异常值是有极强的鲁棒性。Prophet中文翻译是:“先知”。名字还是挺贴切的。在看完本篇文章后,你将会知道:

  • 灰度测试与AB测试_测试种类有哪些

    灰度测试与AB测试_测试种类有哪些这个“常见”,是说当我们经历多了之后,会发现这个概念其实很常见,在当前你所处的这个人群中,发现大家都挂在嘴上。在最开始的测试学习中,其实很少提到这些概念,在职业生涯的前期,也很少需要考虑这些概念。分级测试一般用在系统测试阶段。分级测试,就是说对测试进行分级,区分什么重要、什么不重要,做区别对待。之所以需要区别对待,我总结有两个原因。一个是因为资源上的限制,时间、人力,让我们没有条件来做无差别覆盖。二是本身的限制,在测试阶段,提测质量往往是不尽人意的,只能是层层深入去做测试。.

  • win32创建窗口函数(windows程序内部运行机制)

    win32创建窗口函数(windows程序内部运行机制)

    2021年11月19日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号