7

我加入了一个使用spring框架的项目,所有调用都是由ajax请求进行的,成功后的重定向在视图本身中定义并通过隐藏的输入传递给ajax JS函数(所以在每个函数的末尾返回ModelAndView在控制器中没有任何效果)。我觉得它以某种方式弄乱了代码对吗?我仍然认为这样做是因为他们希望获得将 CRUD 映射到 post、get、put、delete 的 restful 应用程序的好处,但最终他们失去了从控制器本身重定向的能力。

  • 我想知道是否有其他模式可以容纳所有这些。
  • 我也想知道前一种方式 Vs 仅使用 GET 和 POST 的优缺点,这很容易允许从控制器进行重定向。
4

3 回答 3

6

那么我通常使用和推荐的模式如下:

  • 用户加载页面 - 控制器 GET 被调用并加载视图
  • 在页面加载 - AJAX 脚本调用控制器的 POST 以从后端获取数据(用户看到加载器)
  • 在 POST 请求成功后,将呈现数据。
  • 返回错误时 - 向用户显示来自后端的任何问题的消息(提供对重定向的更多控制)

这种方法的优点:

  1. 增加错误处理的灵活性
  2. 对于数据密集型页面,用户不必等待页面加载
  3. 可以用作混合方法,您可以使用完整的 web 2.0 感觉或对某些操作使用更传统的方法。
于 2012-11-13T11:40:40.340 回答
2

阿贾克斯:

  • +浏览器刷新时没有双重帖子
  • +客户端执行
  • +less 对服务器的请求
  • -关于 XSS 攻击的额外安全检查/配置

HTML:

  • +适用于所有浏览器
  • +在停用 javascript 时工作
  • -在速度方面缺乏可用性

我只是在 Spring 上花很少的时间,所以我无法判断所有事情。可能是spring的发展模式本身让你觉得不舒服。在 Java 中,您习惯于在 OOP 中感受。MVC 的一般概念与 html AJAX 等混合在一起。请记住,您有一个服务器/客户端架构,并且您希望所有组件都不同。这就是 Google Web Toolkit 可以很好地完成的事情。

所以我读到的是你让浏览器刷新。如果您进行刷新,AJAX 的好处在哪里?不了解您的应用程序,但知道在 Java 中有些事情不能那么容易完成(如果您正在改编外国代码),您做得对,应该考虑您的程序序列。

除了 AJAX HTML 之外,我能想到的唯一不同的方式是 Socket 连接,可以使用 ActiveX 组件、Flash 或 html5 Websockets 来完成。但这通常不是您用于简单表单的内容。

顺便提一句。已知 GET 字符串最大约为 2000 个字符,但执行速度更快,因为您不发送 POST 之类的标头。

在我看来:关于性能,最好先减少请求并吐出更多的 html,而不是尝试强迫自己到处制作 ajax。反正你失去了你的 SEO 优势......

于 2012-11-17T19:19:20.030 回答
0

多年来,Web 已经成熟了很多。传统的 HTTP 请求类型(如 PUT、DELETE)在 Web 开发中的大多数情况下都没有用,因此它们的使用很少。

建议在您的 Web 应用程序开发方法中仅使用 GET & PUT 设计模式。无论您只需要发送一个或最多两个输入参数来获得响应,您都应该使用 GET,每当您需要发送超过 2 个参数以输入到 HTTP 资源(即 URI)时,您都可以使用 POST

于 2012-11-17T10:52:40.143 回答