美高梅网址 > 仙剑奇侠传官网 > 返回数据一般会选择返回json数据

原标题:返回数据一般会选择返回json数据

浏览次数:194 时间:2019-12-18

1. 赶回数据与重回页面

在写web项指标时候,controller里的重回值日常分为两种,生龙活虎种是回去页面,也等于ModeAndView,另黄金时代种是一贯回到数据,举个例子json格式的数目。

再次来到多个页面,大家需求运用一些模板引擎,例如熟练的jsp,模板引擎后边会详细讲授。

重临数据貌似会选拔重回json数据,大家事情未发生前的demo项目中接收的@RestController正是一个回去数据的注释。

@RestController是一个构成注明,是由@Controller和@ResponseBody组合而成的。
返回数据一般会选择返回json数据。@Controller:将重临值渲染为页面。
@ResponseBody:将再次来到值渲染为数量。

2. spring boot帮助的模版引擎

spring-boot 协助多种模板引擎包含:

  • FreeMarker
  • Groovy
  • 返回数据一般会选择返回json数据。Thymeleaf (Spring 官方网站使用那么些)
  • Velocity
  • JSP (不推荐,jsp在内嵌的servlet容器中运转有意气风发部分难题。)

作者们在讲前后端抽离从前,都会利用Thymeleaf模板引擎,先轻易的介绍一下它。

2.1 Thymeleaf模板引擎

返回数据一般会选择返回json数据。Thymeleaf是叁个java类库,它是一个xml/xhtml/html5的模板引擎,能够用作mvc的web应用的view层。

Thymeleaf还提供了附加的木块与spring mvc集成,所以接受ssm框架的也足以利用这么些模板引擎。

本来想列一下Thymeleaf的用法的,可是感到有一些多,现在哪个地方用到何地讲好了。

3. 实战

返回数据一般会选择返回json数据。接下去,大家因此二个类型,来施行一下三种不相同的归来结果。

先看一下末段的目录构造:

返回数据一般会选择返回json数据。 

图片 1

目录构造

3.1 创制项目project_1

  • 选择依赖:web Thymeleaf

 

图片 2

慎选信任

3.2 新建一个person类,用来封装数据

package com.example.model;

public class Person {

    private String name;
    private Integer age;

    public Person() {
    }

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }
}

3.3 新建贰个ViewController,用来回到一个视图

package com.example.controller;

import com.example.model.Person;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.ArrayList;
import java.util.List;

@Controller
public class ViewController {

    @RequestMapping("/view")
    public String view(Model model){
        Person person = new Person("x", 22);

        List<Person> list = new ArrayList<>();
        list.add(new Person("a", 11));
        list.add(new Person("b", 12));
        list.add(new Person("c", 13));

        model.addAttribute("onePerson", person);
        model.addAttribute("manyPerson", list);

        return "index";

    }
}

3.4 创立index.html,用来选择数据

<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>test</title>

    <link href="https://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
    <link href="https://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap-theme.min.css" rel="stylesheet"/>
</head>

<body>
    <div class="panel panel-primary">
        <div class="panel-heading">
            <h3 class="panel-title">访问model</h3>
        </div>
        <div class="panel-body">

        </div>
    </div>

    <div th:if="${not #lists.isEmpty(manyPerson)}">
        <div class="panel panel-primary">
            <div class="panel-heading">
                <h3 class="panel-title">列表</h3>
            </div>
            <div class="panel-body">
                <ul class="list-group">
                    <li class="list-group-item" th:each="person:${manyPerson}">


                    </li>
                </ul>
            </div>
        </div>
    </div>
</body>
</html>

此间大家运用了Thymeleaf模板引擎来得到后台传来的数额并深入分析,使用bootstrap框架呈现数据。能够看来,Thymeleaf的用法和jsp照旧有一些像的。能够一贯通过${}的花样来博取attribute中的数据。

在 spring boot 中,模板引擎私下认可是翻开缓存的,假使改换了页面内容,刷新页面是得不到改善后的源委的。大家得以在application.yml中关闭模板引擎缓存:

spring:
  thymeleaf:
    cache: false

意气风发经需求详细的Thymeleaf模板的利用形式教程,能够给自家留言,作者看状态来决定是或不是要写大器晚成篇。因为本人用的亦非不计其数,大多数场所笔者都以左右端分离的。

3.5 运维品种,浏览器访谈http://localhost:8080/view

 

图片 3

view

能够观看,我们中标的在前面四个获取到了数码。形式正是将数据保存在attribute中,然后再前端页面拿到。

3.6 改过ViewController中的@Controller为@RestController,重国民党的新生活运动行

 

图片 4

view

作者们改过了讲明,挖掘结果变了,直接呈现了“index”,是因为@RestController会直接回到数据,实际不是渲染页面,所以直接回到了index(这一个index,是return语句中的卡塔尔

3.7 创设DataController,用来直接回到数据

package com.example.controller;

import com.example.model.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

@RestController  // 使用RestController注解
public class DataController {

    @RequestMapping("/person")
    public Person person(){
        return new Person("aa", 10);
    }

    @RequestMapping("persons")
    public List<Person> persons(){
        return Arrays.asList(new Person("bb", 11), new Person("cc", 12));
    }
}

3.8 重国民党的新生活运动行品种

访问http://localhost:8080/person

 

图片 5

person

赢得了json格式的数量

访问http://localhost:8080/persons

 

图片 6

persons

列表也足以平昔渲染为json。

此地需求注意,即便我们方法的重返值是String(参谋下面的index),那么再次回到的结果便是你return的字符串,假如措施的再次来到值是一个指标(person)或然一个凑合(list,map等),那么拿到的结果便是三个json字符串。spring boot私下认可使用jackson来展开剖释。

jackson也是足以改正为gson也许fastjson的,大家下篇再讲。

3.9 改革DataController中的@RestController为@Controller,重国民党的新生活运动行

访问http://localhost:8080/person

 

图片 7

person


访问http://localhost:8080/persons

 

图片 8

persons

会意识那八个都报错了,因为@Controller注明是渲染视图的,而作者辈回来的是目的恐怕聚众,无法到位平常的渲染。

4. 小结

本文首要教学了spring boot 怎样渲染视图和数目,讲授了@Controller和@RestController的区分与用法。如果有何疑难,请即刻调换笔者。


自己前面写过三个重新认识java系类(还未写完,会写完的。。),篇幅相当短,每生龙活虎篇小说多的有7、8千字,和多个人抱怨说见到百分之五十就不想看了,因为太长了,所以 spring boot 那几个系类会尽量的小巧玲珑,每篇文章只讲一个知识点,这样瞧着不累~

作者:cleverfan
链接:https://www.jianshu.com/p/b2f2f09987de
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


https://www.jianshu.com/u/8dc5811b228f

本文由美高梅网址发布于仙剑奇侠传官网,转载请注明出处:返回数据一般会选择返回json数据

关键词:

上一篇:没有了

下一篇:没有了