@ResponseBody的返回数据类型

摘自:https://blog.csdn.net/weixin_42189604/article/details/82179660

以下是引用自己的,参数上述链接和下面部分

返回类型:ModelAndView,  Model,  ModelMap,  Map, View, String, void。

package controller;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import pojo.User;


@Controller  //类似Struts的Action
public class TestController {

    @RequestMapping("test/login.do")  // 请求url地址映射,类似Struts的action-mapping
    public ModelAndView testLogin() {
        // 创建准备返回的ModelAndView对象,该对象通常包含了返回视图的路径、模型的名称以及模型对象
         ModelAndView mv = new ModelAndView();
         //添加模型数据 可以是任意的POJO对象  
         mv.addObject("message", "Hello World!");  
         // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面  
         mv.setViewName("/login.jsp"); 
        // 返回ModelAndView对象。

        System.out.println("login1=======================");
        return mv;
    }
    //post数据获取
    @RequestMapping(value = "test/login2.do", method ={RequestMethod.POST})
    public ModelAndView testLogin2(HttpServletRequest req, HttpServletResponse res) {
          InputStream inputStream = null;
          BufferedReader br = null;
        try {
            inputStream=req.getInputStream();
            br =new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder sb = new StringBuilder();
            String line="";
            while((line=br.readLine())!=null){
                sb.append(line);
            }
            System.out.println(sb.toString());
            
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 创建准备返回的ModelAndView对象,该对象通常包含了返回视图的路径、模型的名称以及模型对象
         ModelAndView mv = new ModelAndView();
         //添加模型数据 可以是任意的POJO对象  
//         if(users!=null){
//             System.out.println(users.get(0).getName());
//         }
        
         mv.addObject("message", "Hello World!");  
         // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面  
         mv.setViewName("/jsp/login.jsp"); 
        // 返回ModelAndView对象。

        System.out.println("login2=======================");
        return mv;
    }
    //post的json字符串转对象获取
    @RequestMapping(value = "test/login3.do", method ={RequestMethod.POST},
            consumes = "application/json")
    public ModelAndView testLogin3(@RequestBody User users) {
        
        // 创建准备返回的ModelAndView对象,该对象通常包含了返回视图的路径、模型的名称以及模型对象
         ModelAndView mv = new ModelAndView();
         //添加模型数据 可以是任意的POJO对象  
//         if(users!=null){
//             System.out.println(users.get(0).getName());
//         }
        System.out.println("name:"+users.getName()+"pwd:"+users.getPwd());
         mv.addObject("message", "Hello World!");  
         // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面  
         mv.setViewName("/jsp/login.jsp"); 
        // 返回ModelAndView对象。

        System.out.println("login3=======================");
        return mv;
    }
    
    @RequestMapping(value = "test/login4.do", method ={RequestMethod.POST})
    public ModelAndView testLogin4(@RequestBody List<User> users) {
        
        // 创建准备返回的ModelAndView对象,该对象通常包含了返回视图的路径、模型的名称以及模型对象
         ModelAndView mv = new ModelAndView();
         //添加模型数据 可以是任意的POJO对象  
//         if(users!=null){
//             System.out.println(users.get(0).getName());
//         }
        for (int i = 0; i < users.size(); i++) {
            System.out.println("name:"+users.get(i).getName()+"pwd:"+users.get(i).getPwd());
        }
         mv.addObject("message", "Hello World!");  
         // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面  
//         mv.setViewName("/jsp/login.jsp"); 
        // 返回ModelAndView对象。

        System.out.println("login4=======================");
        return mv;
    }
    //form action请求
    @RequestMapping(value = "test/login5.do", method ={RequestMethod.POST})
    public ModelAndView testLogin5(User users) {
        
        // 创建准备返回的ModelAndView对象,该对象通常包含了返回视图的路径、模型的名称以及模型对象
         ModelAndView mv = new ModelAndView();
         //添加模型数据 可以是任意的POJO对象  
//         if(users!=null){
//             System.out.println(users.get(0).getName());
//         }
        System.out.println("name:"+users.getName()+"pwd:"+users.getPwd());
         mv.addObject("message", "Hello World!");  
         // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面  
         mv.setViewName("/jsp/login.jsp"); 
        // 返回ModelAndView对象。
        System.out.println("login5=======================");
        return mv;
    }

    //@RequestParam的参数是get的请求参数,post同名参数无效
    @RequestMapping(value = "test/login6.do", method ={RequestMethod.POST})
    public ModelAndView testLogin6(@RequestParam(value="name",required=false) String name,
            @RequestParam(value="pwd",required=false) String pwd  ){
        
        System.out.println("name:"+name+"pwd:"+pwd);
        // 创建准备返回的ModelAndView对象,该对象通常包含了返回视图的路径、模型的名称以及模型对象
         ModelAndView mv = new ModelAndView();
         mv.addObject("message", "Hello World!");  
         // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面  
         mv.setViewName("/jsp/login.jsp"); 
        // 返回ModelAndView对象。

        System.out.println("login6=======================");
        return mv;
    }
    //get数据获取
    @RequestMapping(value = "test/login7.do", method ={RequestMethod.GET})
    public ModelAndView testLogin7(HttpServletRequest req) {
        String name=req.getParameter("name");
        String pwd=req.getParameter("pwd");
        req.getAttribute("pwd");
        System.out.println("name:"+name+"pwd:"+pwd);
        // 创建准备返回的ModelAndView对象,该对象通常包含了返回视图的路径、模型的名称以及模型对象
         ModelAndView mv = new ModelAndView();
         mv.addObject("message", "Hello World!");  
         // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面  
         mv.setViewName("/jsp/login.jsp"); 
        // 返回ModelAndView对象。

        System.out.println("login7=======================");
        return mv;
    }
    @RequestMapping(value = "test/login8.do", method ={RequestMethod.POST})
    @ResponseBody
    public ModelAndView testLogin8(String s) {
        // 创建准备返回的ModelAndView对象,该对象通常包含了返回视图的路径、模型的名称以及模型对象
         ModelAndView mv = new ModelAndView();
         //添加模型数据 可以是任意的POJO对象  
         System.out.println("s:"+s);
        
         mv.addObject("message", "Hello World!");  
         // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面  
         mv.setViewName("/jsp/login.jsp"); 
        System.out.println("login8======================");
        return mv;
    }
    
    @RequestMapping(value = "test/login9.do", method ={RequestMethod.POST})
    @ResponseBody
    public User testLogin9(@RequestBody List<User> users) {
        for (int i = 0; i < users.size(); i++) {
            System.out.println("name:"+users.get(i).getName()+"pwd:"+users.get(i).getPwd());
        }

        System.out.println("login9=======================");
        return users.get(0);
    }
    
    @RequestMapping(value = "test/login10.do", method ={RequestMethod.POST})
    @ResponseBody//返回字符串只能是json或者xml格式(其他格式前台获取不到)
    public String testLogin10(@RequestBody List<User> users,HttpServletResponse res) {
        for (int i = 0; i < users.size(); i++) {
            System.out.println("name:"+users.get(i).getName()+"pwd:"+users.get(i).getPwd());
        }
        res.setContentType("text/plain");
//        String obj =JSONObject.fromObject(users.get(0)).toString();
        String obj ="nihao";
        System.out.println("login10=======================");
        return obj;
    }
    
}

      function login2() {
            var jsonObject = {
                "name":"456",
                "pwd":"789"
            };
            
            var jsons = JSON.stringify([{
                "name":"321",
                "pwd":"123"
            },{
                "name":"111",
                "pwd":"222"
            }]);
            
            alert(jsons);
            var jsonStr=JSON.stringify(jsonObject); //obj转string
            var jsonObj=JSON.parse(jsonStr);//string转obj
            
            alert(jsonStr);
           
           $.ajax(
           {
              type: "post",
              async: false,
              url: "test/login10.do",
              data: jsons,
              contentType: "application/json; charset=utf-8", //社会自请求宝物类型
              dataType: "text",//设置返回宝物类型
              success: function (result) {
                 alert(result);
              },
              error: function (err) {
                     alert(555);
                      var jsonStr2=JSON.stringify(err)
                  alert(jsonStr2);
    
              }
           }
         );
            
        }

总结:

1.  @ResponseBody;有则返回的是body数据,可以使对象、字符串、json、map、调用者直接获取这些数据。

如果没有@ResponseBody,则发挥的String是返回的下个也没的地址。

2.  ajax的:contentType: "application/json; charset=utf-8", //社会自请求数据类型
              dataType: "text",//设置返回数据类型

猜你喜欢

转载自blog.csdn.net/dhq_blog/article/details/82710840
今日推荐