如果我们打算继续使用单页应用程序,为什么我们需要Spring MVC或Struts框架

时间:2014-06-18 04:22:09

标签: spring model-view-controller single-page-application

我手头有设计问题。传统上我一直在使用REST / SOAP服务为数据开发Spring MVC / Struts / jsf应用程序。

现在我们有了HTML5和其他javascript框架。有鉴于此,我们是否还需要创建Spring MVC应用程序(假设数据是从RESTful服务提供的)

如果我继续使用纯HTML5,CSS UI(使用Ajax调用RESTful服务),我可能遇到的问题是什么?这种方法是否存在安全漏洞,例如易于跨站点脚本编写?

开始时这是一个好方法吗?这种方法会被称为单页应用吗?

2 个答案:

答案 0 :(得分:1)

  1. 您仍然需要从某个地方,w图像和css文件提供单页应用程序。这可能是一个Spring MVC servlet,或者其他什么。

  2. 我查看Spring Data REST这是一个为您创建RESTful HATEOAS端点的servlet。

  3. 如果您的SPA和REST服务位于同一个域中,可能会更容易,因此您不必担心跨域restrictions

    除非采取反制措施,否则他们仍然容易受到XSS攻击,因为任何系统都是如此。 Spring安全可以在这里提供帮助请务必遵循OWASP guidelines

    使用Hibernate Validator的@SafeHTML注释来防止不安全的HTML输入到您的数据库中。使用Spring Security的<content-type-options/><xss-protection/><header name="Content-Security-Policy" value="..."/>设置来帮助对抗XSS。

答案 1 :(得分:1)

Spring MVC,Struts等提供了两个核心功能:路由和绑定。

路由是将HTTP请求分派给相关的代码段。

绑定正在将HTTP请求发送给你的字符串世界转换为更有用的东西,例如不仅包含字符串,而且包含整数和日期的通用Java bean。

此外,还有诸如验证等方面。

最后,它们提供了一个对视图层特别友好的环境。

这个方面本身并没有在您所拥有的所有JSON即将到来且JSON正在回归的世界中过时。您仍然需要路由,但现在您可能不仅仅在请求URL本身上路由,而是在HTTP动词上路由。你仍然需要绑定,让框架将JSON有效负载编组到一些更容易让java工作的地方非常方便。

但是,(我讲的是一般性的,不是具体的,因为我根本不了解Spring或Struts),而MVC框架可以充当后端系统的角色,用于更加面向JSON和原始的HTTP世界,特定的REST框架可以更好地完成工作。

毫无疑问,MVC框架是原始Servlet的重要一步。原始Servlet是功能性的,但对于实际工作来说太简单了。但是,根据10年前世界的设计决策,有些部分显示了它们的年龄,并在更多原始HTTP请求的新世界中受到阻碍。

如果您正在使用混合应用程序,一些MVC和一些HTTP / Ajax方法,那么最好使用您的MVC框架而不是采用新的。

如果你正在做一个纯粹的单页应用程序,那么采用一个倾向于那个利基的框架是值得的。他们只是更合适。

介意,他们也可以并肩生活。如果您愿意,您可以在单个WAR中共同使用,特别是如果要将SPA功能添加到旧应用程序中。它不一定是两种情况。

但我不会仅仅为了处理几个ajax调用而引入一个全新的基础架构组件。最后,它们只是HTTP调用,而MVC框架(与大多数组件框架形成对比)在大多数情况下都可以很好地处理原始HTTP。