加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Struts2返回JSON对象的方法概括

发布时间:2021-11-22 12:48:16 所属栏目:教程 来源:互联网
导读:如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择。而在基于Spring3 MVC的架构下,对HTTP+JSON的返回类型也有很好的支持。但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况。本人碰到需要

如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择。而在基于Spring3 MVC的架构下,对HTTP+JSON的返回类型也有很好的支持。但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况。本人碰到需要用开发基于Struts2的HTTP+JSON返回类型接口就是基于既定框架结构下进行的。
 
Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串;2.使用Struts2对JSON的扩展。
 
一.使用Servlet的输出流
 
JSON接口的实质是:JSON数据在传递过程中,其实就是传递一个普通的符合JSON语法格式的字符串而已,所谓的“JSON对象”是指对这个JSON字符串解析和包装后的结果。
 
所以这里只需要将一个JSON语法格式的字符串写入到Servlet的HttpServletResponse中,这里使用的是PrintWriter的方式,当然也可以采用Stream流的方式。需要注意的是:在调用getWriter之前未设置编码(既调用setContentType或者setCharacterEncoding方法设置编码), HttpServletResponse则会返回一个用默认的编码(既ISO-8859-1)编码的PrintWriter实例。这样就会造成中文乱码。而且设置编码时必须在调用getWriter之前设置,不然是无效的。
 
编写接口代码:
 
这里的方法与一般的Struts2方法的区别是这里是void返回类型。
 
public void write() throws IOException{   
    HttpServletResponse response=ServletActionContext.getResponse();   
    /*  
     * 在调用getWriter之前未设置编码(既调用setContentType或者setCharacterEncoding方法设置编码),  
     * HttpServletResponse则会返回一个用默认的编码(既ISO-8859-1)编码的PrintWriter实例。这样就会  
     * 造成中文乱码。而且设置编码时必须在调用getWriter之前设置,不然是无效的。  
     * */  
    response.setContentType("text/html;charset=utf-8");   
    //response.setCharacterEncoding("UTF-8");   
    PrintWriter out = response.getWriter();   
    //JSON在传递过程中是普通字符串形式传递的,这里简单拼接一个做测试   
    String jsonString="{"user":{"id":"123","name":"张三","say":"Hello , i am a action to print a json!","password":"JSON"},"success":true}";   
    out.println(jsonString);   
    out.flush();   
    out.close();   
}  
配置action
 
从以下的配置中可以明显的看到配置与普通的action配置没有任何区别,只是没有返回的视图而已。
 
<action name="write" class="json.JsonAction" method="write" />   
 
返回值
 
Console代码
 
{"user":{"id":"123","name":"张三","say":"Hello , i am a action to print a json!","password":"JSON"},"success":true}  

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读