【问题标题】:Using ajax post,get, put, delete etc Vs html post and get only in spring pros and cons使用 ajax post、get、put、delete 等与 html post 并仅在 spring 中获取优点和缺点
【发布时间】:2012-10-27 15:13:12
【问题描述】:

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

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

【问题讨论】:

    标签: design-patterns rest jakarta-ee spring-mvc http-method


    【解决方案1】:

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

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

    这种方法的优点:

    1. 提高了错误处理的灵活性
    2. 对于数据密集型页面,用户无需等待页面加载
    3. 可用作混合方法,您既可以使用完整的 Web 2.0 感觉,也可以对某些操作使用更传统的方法。

    【讨论】:

      【解决方案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 优势.....

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 为什么在2个参数处画线,为什么不是3、10、50或更多?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-19
        • 1970-01-01
        • 2015-01-25
        • 1970-01-01
        • 2020-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多