使用ajax帖子,获取,放置,删除等Vs html帖子只获得春天的利弊

时间:2012-10-27 15:13:13

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

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

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

3 个答案:

答案 0 :(得分:6)

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

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

这种方法的优点:

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

答案 1 :(得分:2)

的Ajax:

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

HTML:

  • +适用于所有浏览器
  • +在停用javascript时有效
  • - 速度方面的可用性

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

所以我读到的是你刷新浏览器。如果你进行刷新,AJAX的好处在哪里?不知道你的应用程序,但知道有些事情在Java中不能这么简单(如果你正在调整外国代码),你做得对,应该考虑你的程序序列。

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

顺便说一句。已知GET字符串最大约为2000个字符,但执行速度稍快,因为您不发送POST等标题。

在我的观点中:关于性能,最好是减少请求并吐出更多的html而不是尝试强迫自己在各处制作ajax。既然你失去了你的SEO优势.....

答案 2 :(得分:0)

多年来,网络已经成熟了很多。像PUT,DELETE这样的传统HTTP请求类型对Web开发中的大多数情况都没用,因此它们的使用很少。

建议仅使用GET& PUT Web应用程序开发方法中的设计模式。无论你只需要发送一个或几乎两个输入参数来获得响应,你应该使用GET,每当你需要发送2个以上的参数输入到HTTP资源,即URI,那么你可以使用POST