2011-02-03 25 views
0

对于struts2和Ajax我很新,实际上我有一个JSP下拉菜单让我们说first.jsp,当用户从下拉菜单中选择一个选项时,我打电话给一个函数的Action类让我们说Method1.在这个方法中,我从数据库中获取一些值(可以说:a,b,c),并且来自java内存的一个值可以说d。然后我转发到second.jsp并显示所有参数(a,b,c和d)。strutrs2和ajax(在jsp上显示动态值)

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

一个解决方案是我在second.jsp中使用,所以在10秒的时间间隔之后,Mehod1会调用它,它将从db中获取值(a,b,c),并从java内存中更新d的值。并disply它second.jsp.But在这种情况下,我不必从数据库检索值,而我的目的只是为了从内存中获得价值D.这是工作,但这导致我的应用程序变慢。

任何机构都可以提供其他解决方案吗?或者我可以做到这一点使用Ajax和如何?

其他建议?任何帮助表示赞赏。更清楚,我在这个问题上缺乏创意,即使它听起来像一个经典:我花了几个小时试图玩这个,但无处可去

回答

0

好吧.. 。你所要求的有点模糊,所以让我改述:

  • 你有一个用户(USER1)谁打开一个网页并看到一些数据。

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

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

如果是这种情况,您需要了解基本的ajax。对于获得这些演示应用程序的工作:

本例使用道场或许S2 AJAX标记库,我不记得我不喜欢使用AJAX标签(因为它们已被取消,喜欢的jQuery阿贾克斯):

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

这里这个例子显示了一个非常类似的应用程序,但使用jQuery,没有标签库,升级到春天3,它仍然需要抛光:

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

现在你知道如何通过ajax获取数据,用萤火虫看看请求。你会看到请求就像一个典型的函数调用,浏览器一直在等待数据回来。

你所做的只是从行动中返回,直到提供新的数据。这就是所谓的长轮询看到:http://en.wikipedia.org/wiki/Comet_%28programming%29#Ajax_with_long_polling

如果您还没有写一个简单的聊天程序,只用终端窗口,我建议你这样做。每个客户端有两个窗口(客户端发送,客户端接收窗口),您需要一个服务器程序。我记得使用_Thinking In Java 2nd Edition在几个小时内一起黑客入侵(如果我没有记错的话,后来的书籍将联网部分取出)。无论如何,了解客户端服务器交互和长时间轮询会让你的工作。将简单的基于终端的聊天应用程序扩展到S2 ajax聊天应用程序会很有趣。会做一个真棒教程! PS:这只是生产者/消费者问题的一个应用(如果你明白了,那么我猜你不需要做有趣的练习)。

如果服务器是由spring管理的,界面看起来非常漂亮。我知道必须有已经写好的服务器,但我并不熟悉,但很想听到其中之一。