Struts2+Hibernate+Spring下json格式数据问题

最近项目中运用了s2sh架构开发项目,部分页面运用了jquery的ajax方式查询数据,返回格式为json,结果经常出现堆溢出的问题!

 

报的错误是:
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
at java.lang.StringBuilder.append(StringBuilder.java:203)
at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:500)
at com.googlecode.jsonplugin.JSONWriter.string(JSONWriter.java:458)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:141)

 

郁闷了好几天,后来发现是action类里面由于注入了service接口的get方法导致。

      public UserSerivce getUserService(){

               return this.userService;

      }

最后将其去除,程序正常。

       原来当你的项目使用json格式返回的时候你的action类里面所有的的属性具有get方法都会被自动以json格式返回给页面。所以我们以后的项目应该在使用ajax的时候最好单独的写一个Ajax的类。单独写一个针对ajax的struts配置文件。例如:struts-ajax.xml文件内容

<struts>

     <package name="ajax" namespace="/ajax" extends="json-default">

           <action name="query" class="AjaxAction" method="query">

                   <result type="json"/>

           </action>

     </package>
</struts>

页面写法如下:

$.ajax({
                url:"ajax/query.action",
                type:"GET",
                datatype:"json",
                data:'userId='+document.getElementById("uid").value,
                success:function(value){
                    var json = eval( "("+value+")" );
                    var num = eval(json.map.num);
                    if(num!="0")
                    {
                        jQuery('#pNum').text(num);
                    }
                },
                error:function(json){
                    //alert("error");
                }

});

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值