震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)

注:以下我写的所有方法都在我的一个类中,类已经添加好@Controller注解

1、返回静态页面

现在前后端分离,基本不再由后端来返回前端的静态页面,但此处还是分享一下用法,以防万一

如果想要返回静态页面,对应的类和方法就不能再用 @RestController @ResponseBody 这两个注解了,后者表示不再返回静态页面,而是返回数据,前者功能包含后者

需使用@Controller注解(已在类中使用):

    @RequestMapping("/index")
    public String returnIndex(){
        return "/index.html";
    }

index.html是我早已定义好,且放在static目录下的静态页面

震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)_第1张图片

你若也想返回静态页面,在static目录下也需要提前放好对应的静态页面

2、返回数据

    @ResponseBody
    @RequestMapping("/returnData")
    public String returnData(){
        return "返回视图需要的数据";
    }

返回数据需使用@ResponseBody注解

该注解可以修饰类,也可以修饰方法

  •         修饰类的时候,表示这个类下的所有方法,返回的均为数据
  •         修饰方法时,表示该方法返回的是数据

如果一个类中的所有方法返回的是数据,我们就把这个注解加在类上

3、返回html代码片段

    @ResponseBody
    @RequestMapping("/returnHtml")
    public String returnHtml(){
        return "

返回HTML代码片段

"; }

直接在return处编写Html代码即可

4、返回JSON(即主要是对象和Map)

返回JSON是目前最常用的返回数据的格式,对象等数据格式通过注解会自动转换为JSON

    @ResponseBody
    @RequestMapping("/returnJson")
    public Person returnJson(){
        Person person = new Person();
        person.setId(1);
        person.setName("zhangsan");
        person.setAge(7);
        return person;
    }

    @ResponseBody
    @RequestMapping("/returnMap")
    public Map returnMap(){
        Map kv = new HashMap<>();
        kv.put("k1","v1");
        kv.put("k2","v2");
        kv.put("k3","v3");
        return kv;
    }

返回数据的格式是String还是对象,是通过content-type决定的(可以手动指定)

  •         当我们的接口返回的是String时,content-type是text/html
  •         当我们的接口返回的是对象/Map时,content-type自动设置为application/json

手动指定:

设置@RequestMapping的produces参数,来手动指定返回的数据格式

@RequestMapping(value = "/example", produces = "application/json")

5、设置状态码

状态码不影响页面的展示

    // 不常用,目前状态码通常还是用servlet设置的
    @ResponseBody
    @RequestMapping("/setStatus")
    public String setStatus(HttpServletResponse response){
        response.setStatus(401);//通常表示没有登录
        return "设置状态码";
    }

不常用,目前状态码通常还是用servlet设置的

6、设置响应的Header

    @ResponseBody
    @RequestMapping(value = "/r1",produces = "application/json;charset=utf-8")
//    @RequestMapping(value = "/r1")
    public String r1(HttpServletResponse response){
        //设置header
        response.setHeader("myhead","myhead");
        return "{'OK':1}";
    }

Header是HTTP的请求头

Header的详细介绍及获取方式

你可能感兴趣的:(前端,java,spring,intellij-idea,spring,boot,maven)