在项目中需要写一个接口,返回json字符串,供别系统调用,返回格式如下:
具体怎么实现呢,下面以代码与注释进行讲解如何实现的,我这里用两种方式,一是用处理response,第二种方法用spring自带的功能。
第一种实现方式:
首先要有个controller,当然我这里写的是一个很简单的实现,只是体现了实现原理,
@RequestMapping(value = "json/blog/{test}") public String blog(@PathVariable(value = "test") String test, HttpServletResponse response) { List<User> userList = new ArrayList<User>(); User userOne = new User("jack","1001","60","25"); User userTwo = new User("jackson","1002","80","20"); userList.add(userOne); userList.add(userTwo); return ajaxJson(response, getJson(userList)); }
在上面这段代码中用到了getJson和ajaxJson方法,这是两个被封装了的方法。getJson(Object)就是很简单的将对象转换为json串,第二个是对reponse做一定的处理,getJson代码如下:
private static Gson gson = new GsonBuilder().enableComplexMapKeySerialization() .setDateFormat("yyyy-MM-dd HH:mm:ss").create(); /** * 功能描述:根据Object输出JSON字符串 */ public String getJson(Object jsonObject) { return gson.toJson(jsonObject); }
ajaxJson方法的代码如下:
public String ajaxJson(HttpServletResponse response,String jsonString) { return ajax(response,jsonString, "text/html"); } public String ajax(HttpServletResponse response, String content, String type) { try { response.setContentType(type + ";charset=UTF-8"); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.getWriter().write(content); response.getWriter().flush(); } catch (IOException e) { log.error("IOException:", e); } return null; } // 此方法为添加缓存,varnich缓存 public void setCache(HttpServletResponse response, String cacheTime) { long now = System.currentTimeMillis(); long cacheTimeLong = Long.parseLong(cacheTime); response.setDateHeader("Expires", now + cacheTimeLong); response.setDateHeader("Last-Modified", now - (now % cacheTimeLong)); response.setHeader("Cache-Control", "max-age=" + cacheTime+",s-maxage="+ cacheTime); response.setHeader("Pragma", "Pragma"); }
第二种实现方式就很简单了,controller修改如下:
@RequestMapping(value = "json/blog/{test}") @ResponseBody public List<User> blog(@PathVariable(value = "test") String test, HttpServletResponse response) { List<User> userList = new ArrayList<User>(); User userOne = new User("jack","1001","60","25"); User userTwo = new User("jackson","1002","80","20"); userList.add(userOne); userList.add(userTwo); return userList; }
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。看来spring够强大啊,记录下,不过如果用第二种方式的话,如何添加页面缓存和处理callback还有待研究,请大神指点一二!!!
相关推荐
1.纯servlet+jquery局部刷新; 2.fresh 后台包含 json内容,需要json相关jar包,自行下载,不需要的可以删除; 3.有页面点击事件,初学者可以研究下...4.QQ569317668 不喜勿喷 servlet局部刷新及json字符串 相互学习!
前端展示json数据,格式化,可折叠展开
页面加载后,JSON查看器将验证该对象,并且如果解析器返回成功的对象,则JSON对象将显示在可编辑的UI中,否则数据将以原始格式显示。 如何启用暗模式? 在浏览器上打开深色主题(某些浏览器遵循系统主题) 重新...
将每行数据放入List[]> list = new Array List[]>(),并根据excel数据类型将器转换为字符串、数字、Boolean、公式、空值类型防止出现错误,最后返回一个list. 2. ExcelUtil.java工具类 解析通过MutilpartFile导入的...
/** * 自动补全。 * * servlet获取到客户端输入的单词后,转发到一个jsp页面(View),但是这个视图层 * 只返回数据,而不是一个jsp页面,所以也成为一个数据层。 * */
问题 楼主碰到的问题是,在实体类和表中定义的某个字段为RMBPrice,首字母大写,sql查询出来的列名也是大写的RMBPrice...接口返回的是一个@ResponseBody对象,在代码中打断点,一直到接口的返回值都是大写的,所以只可
最近被jquery折磨了一番,倒腾了一个jquery解析json的demo,本demo想实现从asp.net后台实例化dataSet或者dataTable数据集,将dataSet转换成json并...首先 创建一个辅助类,用于将dataset数据集转换成json字符串 代码如下
直接使用EL表达式,js把它识别成字符串了。不是我想要的啊。。网上搜了搜大家的解决方案…最好的当然是把List集合转成json格式传到界面上。这样js里面操作也简单,页面也没有影响。 解决: 将List<String> 转成json,...
这些字符串被用于选择包括在JSON文本中的属性。 stringifier方法可以携带一个可选的替代(replacer)函数。它将在结构中每个值的toJSON方法(如果 有的话)后面执行。它将每个键与值做为参数传递,当然对象要包含这个...
之前使用js获取后台生成的JSON字符串,然后给select填充值,这次需要重新获取一次。 这里的目标是,在一个input输入框里,输入一个用户名,判断是否为空,是否不存在,如果存在返回几个字段给前台,前台再绑定到其他...
同许多初学 Javascript 的菜鸟一样,起初,我也是采用拼接字符串的形式,将 JSON 数据嵌入 HTML 中。开始时代码量较少,暂时还可以接受。但当页面结构复杂起来后,其弱点开始变得无法忍受起来: 书写不连贯。每写一...
在ios应用中,如果从网络请求数据,返回json或者是xml格式的数据时,经常会遇到空串,一般接口是用java等语言写的,如果是安卓,因为源语言都是java,只需判断是否等于null即可,但是在ios中会出现各种各项的形式,...
通过HTTP库向目标站点发起请求,也就是发送一个Request等待服务器响应,如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)...
Java 开发的JSON jar包 用于Java中将字符串或数值转换成json 形式 返回给页面的jar包
说明:1、第一步访问一个微信服务端(带上appid和回调域名信息),那边成功返回一个code号码,回到回调域名...3、回调页面通过token和openid,再请求微信服务端,那边再返回json格式的字符串(微信昵称,图片,性别))
登陆:前后台同用一个登陆页面,登陆等过用户名访问数据库获取该对象信息,在action中返回json字符串,并在登陆jsp中判断用户权限实现跳转不用页面。登陆jsp采用jquery.cooki.js脚本在项目根目录下生成cookie,用来...
如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。npm test 在交互式监视模式下启动测试运行器。 有关更多信息,请参见关于的部分。npm run build 构建生产到应用程序build文件夹。 它在生产...
html页面异步请求servlet(jsp)返回json格式数据【写好的字符串】,不用连接数据库,然后在html页面生成树型图,点击伸缩或展开,公司架构,oa经常用到,没分了,要回血先,先谢谢下载的兄弟!
整个系统使用bootstrap框架搭建前端页面,使用原生js+Ajax+PHP的方式实现前端与后端的数据交互,前端使用post或get的方式发送请求,PHP使用$_GET、$_POST等方式接受数据,将处理后的数据以json字符串的方式返回。...
我们都知道,现在的开发模式都是前后端分离的,后台返回数据给前端,前端负责数据交互并渲染到页面,所以我们需要从后端接口上获取数据显示到页面上。在接受服务器端数据数据时,一般是字符串。这时,就需要用到JSON...