栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java从零到架构师第③季】【29】SpringMVC-返回值—JSON、XML

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java从零到架构师第③季】【29】SpringMVC-返回值—JSON、XML


持续学习&持续更新中…

守破离


【Java从零到架构师第③季】【29】SpringMVC-返回值—JSON、XML

无返回值返回值—普通文本、HTML返回值—XML—方法一返回值—XML—方法二返回值—JSON—方法一返回值—JSON—方法二返回值—字符集设置注意和一些细节参考

无返回值

@Controller
public class VoidController {
    @GetMapping("/testVoid")
    public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("testVoid");
    }
}
返回值—普通文本、HTML

@Controller
public class PlainController {
    @GetMapping(value = "/plainText", produces = "text/plain;charset=utf-8")
    @ResponseBody
    public String plainText() {
        return "好好读书!Good!";
    }
}
@Controller
public class HTMLController {
    @GetMapping(value = "/htmlText", produces = "text/html;charset=utf-8")
    @ResponseBody
    public String htmlText() {
        return  "#FF0000
" + "#00FF00
" + "#0000FF"; } }
返回值—XML—方法一

@Controller
public class XMLController {
    
    @GetMapping(value = "/xml1", produces = "application/xml;charset=utf-8")
    @ResponseBody
    public String xml1() {
        // 从数据库中获取到数据
        Person person = new Person();
        person.setName("Jack");
        person.setAge(20);
        Car car = new Car();
        car.setName("BMW");
        car.setPrice(123);
        person.setCar(car);

        // 用第三方库将Model对象转为XML字符串(很多这样的库)
        return "n" +
                "n" +
                "    n" +
                "";
    }
}
返回值—XML—方法二

	
	    javax.xml.bind
	    jaxb-api
	    2.4.0-b180830.0359
	
	
	    javax.xml
	    jaxb-impl
	    2.1
	

数据格式一:

	要求返回的数据格式:
	
	    
	

@Controller
public class XML2Controller {
    @GetMapping(value = "/xml2", produces = "application/xml;charset=utf-8")
    @ResponseBody
    public Person xml2() {
        // 从数据库中获取到数据
        Person person = new Person();
        person.setName("Jack");
        person.setAge(20);
        Car car = new Car();
        car.setName("BMW");
        car.setPrice(123);
        person.setCar(car);
        return person;
    }
}

数据格式二:

	要求返回的数据格式:
	
	    Jerry
	    16
	    
	        Audi
	        222
	    
	

@Controller
public class XML3Controller {
    @GetMapping(value = "/xml3")
    @ResponseBody
    public Person xml3() {
        // 从数据库中获取到数据
        Person person = new Person();
        person.setName("Jerry");
        person.setAge(16);
        Car car = new Car();
        car.setName("Audi");
        car.setPrice(222);
        person.setCar(car);
        return person;
    }
}

数据格式三:

	要求返回的数据格式:
	
	    
	        
	        
	        
	    
	

@Controller
public class XML4Controller {
    @GetMapping("/xml4")
    @ResponseBody
    public Person xml4() {
        // 从数据库中获取到数据
        Person person = new Person();
        person.setName("Tom");
        person.setAge(18);
        List cars = new ArrayList<>();
        person.setCars(cars);
        cars.add(new Car("Audi", 111));
        cars.add(new Car("Benz", 222));
        cars.add(new Car("BMW", 333));
        return person;
    }
}
返回值—JSON—方法一

标准的JSON格式(使用双引号):

格式化前(利于传输,不浪费空间):
{"name":"Jack","age":20,"car":{"name":"Audi","price":100}}
格式化后(便于查看,不利于传输,浪费空间):
{
  "name": "Jack",
  "age": 20,
  "car": {
    "name": "Audi",
    "price": 100
  }
}
@Controller
public class JSON1Controller {
    @GetMapping(value = "/json1", produces = "application/json;charset=utf-8")
    @ResponseBody
    public String json1() {
        // 从数据库中获取到数据
        // 用第三方库将Model对象转为JSON字符串(很多这样的库)
        return "{"name":"Jack","age":20,"car":{"name":"Audi","price":100}}";
    }
}

getJSON.jsp(使用AJAX模拟客户端获取数据):

返回值—JSON—方法二

依赖:

	
	    com.fasterxml.jackson.core
	    jackson-databind
	    2.11.0
	

代码(引入Jackson后,就可以直接返回model了,不用像XML那样,还要在domain model中做一些配置):

@Controller
public class JSON2Controller {
    @GetMapping("/json2")
    @ResponseBody
    public Student json2() {
        Student student = new Student();
        student.setName("Jack");
        student.setAge(20);
        student.setNickNames(Arrays.asList("123", "456", "789"));
        Dog dog = new Dog();
        dog.setName("Benz");
        dog.setPrice(100);
        student.setDog(dog);
        return student;
    }
}
返回值—字符集设置

HTML、JSP文件的字符集已经在页面内通过、<%@ page contentType="text/html;charset=UTF-8" language="java" %>设置好了



    
    
    
        
        
        
            
            
                
            
            
            
                
            
            
            
                
            
        
    
    
    

注意和一些细节

返回数据(例如JSON、XML)给客户端时,应该将数据压缩好后(去除不必要的空格等),再传递给客户端。只需要保证数据的格式正确即可,能让客户端正确解析就好。避免不必要的空间浪费、流量浪费。(数据越大,则所需字节越多,传递给客户端时,消耗的时间、用户消耗的流量等也就会越多)客户端与服务器之间也是通过IO流进行传输的,被传输数据的字节肯定越少越好。 参考

小码哥-李明杰: Java从0到架构师③进阶互联网架构师.


本文完,感谢您的关注支持!


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711475.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号