strutrs2和ajax(在jsp上显示动态值)

时间:2011-02-03 15:18:09

标签: ajax struts2

我对struts2和Ajax很新,其实我在JSP中有一个下拉菜单让我们说first.jsp,当用户从下拉菜单中选择一个选项时,我调用一个Action类的函数让我们说Method1。这个方法我从DB获取一些值(比如说:a,b,c),java内存中的一个值可以说d。然后我转发到second.jsp并显示所有参数(a,b,c和d)表格格式。

现在的问题是参数d是动态的,这是由其他一些应用程序更新的,如果它的更改,那么我必须在JSP上显示它而不执行任何操作。

我在second.jsp中使用了一个解决方案,所以在10秒的间隔后,Mehod1将再次调用,它将从db获取值(a,b,c)并从java内存中获取d的更新值。并且它显示为second.jsp.But在这种情况下我不必从db中检索值,而我的目的只是从内存中获取值。这是有效的,但这导致我的应用程序变慢。

任何人都可以提出其他解决方案吗?或者我可以使用ajax以及如何做到这一点?

还有其他建议吗?任何帮助是值得赞赏的。更清楚,我在这个问题上缺乏想法,即使它听起来像一个经典:我花了几个小时试图玩这个但是无处可去

1 个答案:

答案 0 :(得分:0)

好的......你问的是有点模糊所以让我改写一下:

  • 您有一个用户(USER1)打开网页并查看一些数据。

  • 您有第二个用户(USER2)(可能是某个应用程序),可以不时设置一个值。

  • 当USER2更新该值时,您希望USER1在其打开的浏览器窗口中看到它发生变化吗?

如果是这种情况,您需要了解基本的ajax。为此,让这些演示应用程序正常运行:

这个例子使用了dojo,也许是S2 ajax标签lib我不记得我不想使用ajax标签(因为它们已被弃用,而且更喜欢jquery用于ajax):

http://struts.apache.org/2.x/docs/struts-2-spring-2-jpa-ajax.html

此示例显示了一个非常相似的应用程序,但是使用jquery,没有标记库,升级到Spring 3,它仍然需要抛光:

http://www.kenmcwilliams.com/Downloads/

既然您已经知道如何通过ajax获取数据,请使用firebug查看请求。你会看到请求就像一个典型的函数调用,浏览器一直在等待数据回来。

您所做的只是在提供新数据之前不会从操作中返回。这称为长轮询,请参阅:http://en.wikipedia.org/wiki/Comet_%28programming%29#Ajax_with_long_polling

如果您还没有编写简单的聊天程序,只使用终端窗口,我建议您这样做。每个客户端有两个窗口(客户端发送,客户端接收窗口),您需要一个服务器程序。我记得在几个小时内使用_Thinking In Java第二版一起攻击一个(如果我没记错的话,后来的书就拿出了网络部分)。无论如何,在了解客户端服务器交互和长轮询之间,您都可以使用。将基于简单终端的聊天应用程序扩展到S2 ajax聊天应用程序会很有趣。会做一个很棒的教程! PS:这只是生产者/消费者问题的应用(如果您了解那么我猜你不需要做有趣的练习)。

如果服务器是由spring管理的,那么接口看起来会很漂亮。我知道必须有好的服务器已经写好但我不熟悉任何服务器,但我很乐意听到。