thymeleaf渲染不出效果(简单的问题)

今天重新复习了下springboot的自动配置原理,根据springboot在maven的pom.xml文件下添加以下依赖就可以引入thymeleaf

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

但是同时也需要thymeleaf和thymeleaf-layout-dialect的版本相匹配,thymeleaf 3.x的版本需要thymeleaf-layout-dialect 2.x的版本以上适配。
所以注意在<properties中添加下版本

    <properties>
        <java.version>1.8</java.version>
        <thymeleaf.version>3.0.11.RELEASE</thymeleaf.version>
        <thymeleaf-layout-dialect.version>2.4.1</thymeleaf-layout-dialect.version>
    </properties>

然后运行springboot启动类,在浏览器输入请求路径,发现没有成功渲染,代码如下

//@ResponseBody
//@Controller
@RestController
public class HelloWorldController {

    @RequestMapping("/hello")
    public String hello() {
        return "hello world!";
    }

    @RequestMapping("/success")
    public String success() {
        return "success";
    }

}

原因就是RestController = Controller +ResponseBody
而@ResponseBody是ResponseBody的作用其实是将java对象转为json格式的数据。
@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】。
注意:在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。
版权声明:本文为CSDN博主「originations」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/originations/article/details/89492884

总的来说就是@ResponseBody它是作用在方法上并且不回再走视图解析器,直接将数据转为json或者xml数据写入http response body中返回给浏览器。

而Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎的Thymeleaf主要作用是把model中的数据渲染到html中,因此其语法主要是如何解析model中的数据。因此它得不到用@responsebody注解的方法里返回的数据。
改成如下代码:

package com.atguigu.springboot_demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author liuhaoqi
 * @Date 2020/3/10 15:30
 * @Version 1.0
 */

//这个类的所有方法返回的数据直接写给浏览器,(如果是对象 还能转为json数据)
//@ResponseBody
//@Controller
@Controller
public class HelloWorldController {

    @ResponseBody
    @RequestMapping("/hello")
    public String hello() {
        return "hello world!";
    }

    @RequestMapping("/success")
    public String success() {
        return "success";
    }

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值