如何使用AJAX渲染视图,使用Spring MVC创建JQuery

时间:2012-05-24 15:06:21

标签: java jquery ajax spring spring-mvc

如何使用AJAX渲染视图,JQuery使用Spring MVC。

我应该使用什么样的最佳设计模型在Web项目中使用AJAX,JQuery和Spring MVC来渲染视图。

过去我做了Spring / Java编程,我把每个屏幕都做成了一个JSP文件。所以每当我需要它来显示一个新的屏幕时,我都会调用服务器并加载一个新的JSP。

现在使用Ajax和JQuery

我可以拥有JSP页面然后使用JQuery来改变屏幕与DIV,使其看起来像新页面而不需要去服务器,唯一的问题是如何显示这个?任何简单的方法

我在想使用Ajax和JQuery会让我减少我必须拥有的JSP页面的数量,但我不想让一个文件中包含大量的javascript,并且很难用javascript渲染屏幕

我在考虑使用ajax加载屏幕的不同部分可能需要它,但在屏幕上显示它们有不同的JSP

3 个答案:

答案 0 :(得分:2)

如果您想将ajax调用合并到您的Web应用程序中,您可以做出几个基本选择。您将发出ajax请求,并获得响应。该格式会有什么回应?

有两种非常常见的选择:

  1. JSON,然后您可以使用它来填充页面的元素。您根本不需要JSP来执行此操作,您的服务器端spring控制器只需要以JSON格式回送页面所需的数据。我推荐GSON serializer,但也有其他几个。
  2. HTML片段,然后将填充div(或类似)。您只需返回页面的一部分,而不是在此处返回整页,然后您的javascript将会显示。如果您希望在服务器端处理视图呈现/逻辑,则此选项更好。
  3. 第二种方法就是你在问题中描述的内容。在人们这样做的意义上,它是一种有效的方法,但我通常更喜欢让我的异步调用使用JSON,并在源页面上包含视图逻辑,并在必要时隐藏视图。

    要回答有关隐藏和显示DIV元素的问题,答案是使用jQuery的toggle()函数。

答案 1 :(得分:0)

应该看一下backbone.js

这是一个javascript框架,它依赖于RESTful服务来提供持久性和提取。

框架本身设计得很好,将视图逻辑与模型层等区分开来。

如果您选择基于不同视图加载信息的jsp解决方案,我可能会建议采用不同的方法。而不是您的控制器返回jsp视图,而是返回JSON并让ajax呈现json。通过诸如把手之类的模板系统可以非常干净地渲染这些信息,从而减少代码混乱。

答案 2 :(得分:0)

不要使用任何JSP / JSTL并仅将页面保持在干净的HTML和CSS中。使用360或其他任何线框来创建页面模板。您可以使用此线框将视图放置在需要的位置。

然后为每个Viewlet分配一个<div id="viewlet1"></div>

加载Java脚本文件,其中包含每个viewletid与rest函数的绑定。例如:

var viewlets=[ ["#custmeraddress","/customer/address"],["..","...."],...]

在DocumentReady中,将Rest响应绑定到相应的位置,例如:

$(viewlets[0]).load(viewlets[1]);

将每个休息函数的html提取到相应的位置。

其余每个函数都必须只生成XML。他们不得生成任何HTML。每个rest函数在返回内容之前,都应该使用XSL将XML转换为HTML。

保留一组主XSL文件和特定功能包括将任何其余生成的XML转换为HTML。

所有其他函数都应该将数据访问委托给主DAO。主DAO本身应该不了解生产者和消费者,它应该只是调解。将主DAO使用的所有SQL保留在bean规范或静态XML文件中。每个查询都必须在此查询库文件中,以便缓存管理器可以缓存查询结果。

根据rest函数,master DAO找到所需的XML,从请求对象中应用params,创建XML片段并返回到rest函数。

主DAO也可以是缓存管理器的使用者。缓存管理器拦截所有读取和写入,分析SQL并验证/无效查询库中任何查询的缓存图像。