使用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页面的响应时间是好的
问题:
在本地主机上运行项目时,响应时间很短。
在远程服务器上运行时,客户端响应需要10秒以上。操作数据库非常快,似乎需要很长时间才能将结果从服务器发送到浏览器。
当结果为null时,响应时间很短,即使是从远程服务器也是如此。
如何缩短响应时间?
答案 0 :(得分:0)
根据您提供的信息,我首先会看一下JSON响应大小。您提到当响应为空时,响应时间很短。要么直接在浏览器中发出AJAX请求,要么使用像Firebug(对于Firefox)这样的调试工具来查看响应。响应可能非常大,并且减速是将Java对象编组为JSON响应。
如果JSON响应非常大并且您不需要返回所有信息,您可能会发现创建一个仅包含您需要的字段的对象更容易,然后对其进行编组。
<强>更新强>
好的,我们可以排除响应过大。您是否有这么大的excludeProperties列表?你可能想尝试评论它,看看它是否有帮助。否则,也许你的服务器很慢?
答案 1 :(得分:0)
我用json-lib-2.3-jdk15.jar替换jsonplugin,问题已解决。非常感谢你的帮助〜现在开心哦(∩_∩)O~