0

如何使用 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

4

3 回答 3

2

如果您想将 ajax 调用合并到您的 Web 应用程序中,您需要做出几个基本的选择。你将发出一个 ajax 请求,然后得到一个响应。这种格式会有什么反应?

有两个非常常见的选项:

  1. JSON,然后您可以使用它来填充页面的元素。您根本不需要 JSP 来执行此操作,您的服务器端 spring 控制器只需要以 JSON 格式流回您的页面所需的数据。我推荐GSON 序列化器,但还有其他几个。
  2. HTML 片段,然后将填充到 div (或类似的)中。您只返回页面的一部分,而不是在此处返回完整页面,然后您的 javascript 将显示该页面。如果您希望在服务器端处理视图呈现/逻辑,则此选项会更好。

第二种方法是您在问题中描述的那种。在人们这样做的意义上,这是一种有效的方法,但我通常更喜欢让我的异步调用使用 JSON,并在源页面上包含视图逻辑,并在必要时隐藏视图。

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

于 2012-05-24T15:38:37.630 回答
0

应该看看backbone.js

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

框架本身设计得非常好,并将视图逻辑与模型层等分离出来。

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

于 2012-05-24T15:28:49.220 回答
0

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

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

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

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

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

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

这会将 html 从每个 rest 函数中提取到其相应的位置。

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

保留一组主 XSL 文件和特定于函数的包含,以将任何其余生成的 XML 转换为 HTML。

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

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

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

于 2012-05-24T17:03:30.490 回答