`
guyunduzai
  • 浏览: 16900 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
阅读更多

在项目中需要写一个接口,返回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还有待研究,请大神指点一二!!!

  • 大小: 7.4 KB
分享到:
评论

相关推荐

    servlet局部刷新及json字符串

    1.纯servlet+jquery局部刷新; 2.fresh 后台包含 json内容,需要json相关jar包,自行下载,不需要的可以删除; 3.有页面点击事件,初学者可以研究下...4.QQ569317668 不喜勿喷 servlet局部刷新及json字符串 相互学习!

    前端展示json数据,格式化,可折叠展开

    前端展示json数据,格式化,可折叠展开

    json-beautifier:将JSON字符串转换为友好的可读格式

    页面加载后,JSON查看器将验证该对象,并且如果解析器返回成功的对象,则JSON对象将显示在可编辑的UI中,否则数据将以原始格式显示。 如何启用暗模式? 在浏览器上打开深色主题(某些浏览器遵循系统主题) 重新...

    springMVC poi解析ajax上传excel文件,返回json对象\list数组

    将每行数据放入List[]&gt; list = new Array List[]&gt;(),并根据excel数据类型将器转换为字符串、数字、Boolean、公式、空值类型防止出现错误,最后返回一个list. 2. ExcelUtil.java工具类 解析通过MutilpartFile导入的...

    搜索提示自动补全Json版

    /** * 自动补全。 * * servlet获取到客户端输入的单词后,转发到一个jsp页面(View),但是这个视图层 * 只返回数据,而不是一个jsp页面,所以也成为一个数据层。 * */

    jackson解析json字符串,首字母大写会自动转为小写的方法

    问题 楼主碰到的问题是,在实体类和表中定义的某个字段为RMBPrice,首字母大写,sql查询出来的列名也是大写的RMBPrice...接口返回的是一个@ResponseBody对象,在代码中打断点,一直到接口的返回值都是大写的,所以只可

    Jquery解析json数据详解

    最近被jquery折磨了一番,倒腾了一个jquery解析json的demo,本demo想实现从asp.net后台实例化dataSet或者dataTable数据集,将dataSet转换成json并...首先 创建一个辅助类,用于将dataset数据集转换成json字符串 代码如下

    javaScript如何处理从java后台返回的list

    直接使用EL表达式,js把它识别成字符串了。不是我想要的啊。。网上搜了搜大家的解决方案…最好的当然是把List集合转成json格式传到界面上。这样js里面操作也简单,页面也没有影响。 解决: 将List&lt;String&gt; 转成json,...

    json的介绍 以及 json2.js的用法

    这些字符串被用于选择包括在JSON文本中的属性。 stringifier方法可以携带一个可选的替代(replacer)函数。它将在结构中每个值的toJSON方法(如果 有的话)后面执行。它将每个键与值做为参数传递,当然对象要包含这个...

    js使用ajax传值给后台,后台返回字符串处理方法

    之前使用js获取后台生成的JSON字符串,然后给select填充值,这次需要重新获取一次。 这里的目标是,在一个input输入框里,输入一个用户名,判断是否为空,是否不存在,如果存在返回几个字段给前台,前台再绑定到其他...

    Javascript 字符串模板的简单实现

    同许多初学 Javascript 的菜鸟一样,起初,我也是采用拼接字符串的形式,将 JSON 数据嵌入 HTML 中。开始时代码量较少,暂时还可以接受。但当页面结构复杂起来后,其弱点开始变得无法忍受起来: 书写不连贯。每写一...

    Objective-C处理空字符串和页面传值及自定义拷贝

    在ios应用中,如果从网络请求数据,返回json或者是xml格式的数据时,经常会遇到空串,一般接口是用java等语言写的,如果是安卓,因为源语言都是java,只需判断是否等于null即可,但是在ios中会出现各种各项的形式,...

    TestDuBoKu.py

    通过HTTP库向目标站点发起请求,也就是发送一个Request等待服务器响应,如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)...

    Java JSON-lib

    Java 开发的JSON jar包 用于Java中将字符串或数值转换成json 形式 返回给页面的jar包

    获取微信信息asp.rar

    说明:1、第一步访问一个微信服务端(带上appid和回调域名信息),那边成功返回一个code号码,回到回调域名...3、回调页面通过token和openid,再请求微信服务端,那边再返回json格式的字符串(微信昵称,图片,性别))

    MF00617-JAVA餐厅点餐管理源码.zip

    登陆:前后台同用一个登陆页面,登陆等过用户名访问数据库获取该对象信息,在action中返回json字符串,并在登陆jsp中判断用户权限实现跳转不用页面。登陆jsp采用jquery.cooki.js脚本在项目根目录下生成cookie,用来...

    JSON_Formatter:JSON Formatter验证并漂亮地打印用户提交的字符串

    如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。npm test 在交互式监视模式下启动测试运行器。 有关更多信息,请参见关于的部分。npm run build 构建生产到应用程序build文件夹。 它在生产...

    ztree java树图 树型结构 jsp servlet json jquery

    html页面异步请求servlet(jsp)返回json格式数据【写好的字符串】,不用连接数据库,然后在html页面生成树型图,点击伸缩或展开,公司架构,oa经常用到,没分了,要回血先,先谢谢下载的兄弟!

    电影购票系统(包含接口文件、微信小程序、web前端、web管理端、SQL文件)

    整个系统使用bootstrap框架搭建前端页面,使用原生js+Ajax+PHP的方式实现前端与后端的数据交互,前端使用post或get的方式发送请求,PHP使用$_GET、$_POST等方式接受数据,将处理后的数据以json字符串的方式返回。...

    关于JSON解析的实现过程解析

    我们都知道,现在的开发模式都是前后端分离的,后台返回数据给前端,前端负责数据交互并渲染到页面,所以我们需要从后端接口上获取数据显示到页面上。在接受服务器端数据数据时,一般是字符串。这时,就需要用到JSON...

Global site tag (gtag.js) - Google Analytics