本文目录
- http和json有什么区别?
- @responsebody一般在什么情况下使用,他的好处与坏处?
- json数据在后台打印还是好的,传到页面上来就带反斜杠了?
- 将Datatable转化成json发送前台实现思路?
- 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中。它的使用情况如下:
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; }