发布日期:2023-07-17 18:31:59

resultresponsejson

本文目录

  1. http和json有什么区别?
  2. @responsebody一般在什么情况下使用,他的好处与坏处?
  3. json数据在后台打印还是好的,传到页面上来就带反斜杠了?
  4. 将Datatable转化成json发送前台实现思路?
  5. springmvc怎么处理返回值?

http和json有什么区别?

HTTP和JSON是两个不同的概念。

HTTP(Hypertext Transfer Protocol)是一种传输协议,用于在Web服务器和客户端之间传输数据。HTTP被广泛应用于互联网上的各种网站和应用程序中,它可以传输HTML、CSS、JavaScript、图片、音频、视频等多种文件类型,同时还支持POST、GET等请求方法,以及状态码、响应头等信息的传输。

JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,通常用于前后端数据的传输和存储。与XML相比,JSON更加简洁易读,而且被多种编程语言所支持。JSON数据格式具有良好的可扩展性和易于处理的特点,其格式通常为键值对或者数组,支持嵌套和序列化,可以通过JavaScript的内置函数实现数据的解析和操作。

因此,HTTP和JSON处理的内容不同,但也存在一定的关联。在Web开发中,通常使用HTTP协议来进行数据的传输和通信,而JSON作为其中一种数据格式,常常被用作HTTP协议中消息体的数据格式。例如,在AJAX等场景中,HTTP请求的响应就可以是一个JSON对象,用于向前端返回需要的数据。

@responsebody一般在什么情况下使用,他的好处与坏处?

@responsebody表示该方法的返回结果直接写入HTTP response body中。它的使用情况如下:

1、一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。

2、一般是指定要response 的type。比如json 或 xml 可以直接用jackson或jaxb的包,然后就可以自动返回了,xml中也无需多的配置,就可以使用。好处是:GET模式下,这里使用了@PathVariable绑定输入参数,非常适合Restful风格。因为隐藏了参数与路径的关系,可以提升网站的安全性,静态化页面,降低恶意攻击风险。POST模式下,使用@RequestBody绑定请求对象,Spring会帮你进行协议转换,将Json、Xml协议转换成你需要的对象。@ResponseBody可以标注任何对象,由Srping完成对象——协议的转换。坏处是:返回之前,若前端编码格式不一致,很容易导致乱码。

json数据在后台打印还是好的,传到页面上来就带反斜杠了?

因为你返回的是String,而不是JSON。如果返回的是JSON是这样的{"a":"b"},而返回是String就成这样了"{\"a\":\"b\"}"。所以需要返回JSON!

将Datatable转化成json发送前台实现思路?

有个取巧的办法,那就是查询时返回Json,用现成组件JsonTo ListList这样程序端不需要写循环,数据库端如果用SQL Serve

用for xml path把select查询结果直接查成Json字符串在一行内返回到程序端

springmvc怎么处理返回值?

  以下是SpringMvc原生支持的返回类型,如果返回Json,可以用Json String或者Map,

  ModelAndView

  Model

  ModelMap

  Map

  View

  String

  Void

  还可以返回类,操作步骤见下面介绍。

  需要注意的是,SpringMvc与Jackson结合使用时,如果返回的是一个 Object、或者返回的Map中是Object型的,就需要对Object中的成员变量加注解,否则会报 错:org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation,500 code error。

  原因是 Jackson 默认情况下不知道怎么去序列化,方法有:

  1.为成员变量增加getter、setter方法

  2. 或者也可以给field加上 @JsonProperty 注解,(也可在getter上加) , 还能用它指定序列化时的属性名

  @JsonProperty可以标注在field或者getter上,

  Defines name of the logical property, i.e. Json object field name to use for the property(i.e. @JsonProperty("GID") ): if empty String (which is the default), will use name of the field that is annotated.

  代码示例:

 class ItemContent {   private int gid;   private int sid;   private Date createTime;   private String gname;   private String name;   private String nologinUrl;   @JsonProperty   int getGid() {   return gid;   }   void setGid(int gid) {   this.gid = gid;   }   @JsonProperty   int getSid() {   return sid;   }   .............................   @RequestMapping(value = "/dissert/getServerList.do")   @ResponseBody   public Object getServerList(HttpServletRequest request) {   Map<String, Object> resultMap = new HashMap<String, Object>();   ..................................   List<ItemContent> tempList = new ArrayList<ItemContent>();   for (GameServer gameServer : listServers) {   ......................   ItemContent item = new ItemContent();   item.setGid(gameServer.getGid());   item.setGname(gameServer.getGname());   item.setSid(gameServer.getSid());   item.setName(gameServer.getName());   item.setCreateTime(gameServer.getCreateTime());   }   tempList.add(item);   }   }   resultMap.put("open", tempList);   return resultMap;   }

  • resultresponsejson已关闭评论
  • A+
所属分类:njqssw