Struts2 + jsonplugin:响应需要很长时间才能在远程服务器的浏览器中显示

时间:2010-12-18 12:25:53

标签: json struts2 jsonplugin

使用Ajax发送请求到操作,结果类型是json。为struts2使用json插件。结果是正确的,但需要很长时间。

以下是struts.xml的内容:

<package name="FoodCompositionSearchajax"  extends="json-default">
      <action name="addSearchCondition" class ="com.fmOnline.action.FmzxMenuCompositionSearchAction" enter code here
method="addSearchCondition"> 
          <result name="success" type="json">
           <param name="excludeProperties">
     showList\[\d+\]\.foodStr,showList\[\d+\]\.nourishStr, 
     showList\[\d+\]\.searchFunction,showList\[\d+\]\.num1, 
     showList\[\d+\]\.num2,showList\[\d+\]\.danwei, 
     showList\[\d+\]\.nourishname,showList\[\d+\]\.resultmap, 
     dataList, foodList, foodStr, map, nourishList, nourishStr, 
     num1, num2, paramList, searchDes, searchFun
   </param> 
          </result>
     </action>
 </package>

<param name="includeProperties">不起作用,因此请改用<param name="excludeProperties">

结果json包含一个列表(showList,包含2个String属性,元素数量从1到6不等)和一个String。我已从客户端页面中的javascript中提醒结果内容,<param name="excludeProperties">正常工作。

json结果是: {&#34; msg&#34;:null,&#34; showList&#34;:[{&#34; id&#34;:1,&#34; searchDes&#34;:&#34;淀粉中的蛋白质含量&gt; = 11&#34;},{&#34; id&#34;:2,&#34; searchDes&#34;:&#34;豆类中的蛋白质含量&gt; = 11&#34;} ,{&#34; id&#34;:3,&#34; searchDes&#34;:&#34;禽类中的蛋白质含量&gt; = 11&#34;}]}

起初,我使用<result type="json"/>。我虽然长时间的原因可能是一个太大的对象。然后我尝试使用@JSON(serialize = false)来反序列化get方法,这样这些方法就不会在从java到json的转换过程中执行。最后我使用了excludeProperties。他们都成功地返回了较小的物体但未能缩短时间。普通jsp页面的响应时间是好的

问题:

  1. 在本地主机上运行项目时,响应时间很短。

  2. 在远程服务器上运行时,客户端响应需要10秒以上。操作数据库非常快,似乎需要很长时间才能将结果从服务器发送到浏览器。

  3. 当结果为null时,响应时间很短,即使是从远程服务器也是如此。

  4. 如何缩短响应时间?

2 个答案:

答案 0 :(得分:0)

根据您提供的信息,我首先会看一下JSON响应大小。您提到当响应为空时,响应时间很短。要么直接在浏览器中发出AJAX请求,要么使用像Firebug(对于Firefox)这样的调试工具来查看响应。响应可能非常大,并且减速是将Java对象编组为JSON响应。

如果JSON响应非常大并且您不需要返回所有信息,您可能会发现创建一个仅包含您需要的字段的对象更容易,然后对其进行编组。

<强>更新

好的,我们可以排除响应过大。您是否有这么大的excludeProperties列表?你可能想尝试评论它,看看它是否有帮助。否则,也许你的服务器很慢?

答案 1 :(得分:0)

我用json-lib-2.3-jdk15.jar替换jsonplugin,问题已解决。非常感谢你的帮助〜现在开心哦(∩_∩)O~