【问题标题】:How to build a java web application如何构建一个java web应用程序
【发布时间】:2009-05-16 10:35:35
【问题描述】:

很快我将不得不为一家公司启动一个网络项目,我现在需要选择一种技术来构建应用程序。 我正在考虑使用 Java,因此我想找到一个可以帮助我构建应用程序的框架(我习惯于 PHP 框架,例如 CakePHP 和 CodeIgniter)。

我不明白的是,它似乎存在很多没有相同目标的框架和技术。动作框架,组件框架......我可以用一个我不能用另一个做什么? 似乎应该通过混合许多不同的技术来开发一个 java web 应用程序,因此我有点迷茫...... 我看过不同的 java 框架,例如 JSF、Stripes、Struts2、Tapestry、Wicket 和 Spring。 关于后者,我不知道这个框架的不同部分是什么,它可以为我做什么,它不能做什么。我可以从 Spring 中获得什么,我不需要什么......

因此:构建 Java Web 应用程序需要什么?

我已经将 JSF 用于基本的 CRUD 应用程序,但我正在尝试寻找更适合我需要的东西。 我们必须构建的应用程序既是一个社区平台,也是一个商家网站,需要保护敏感数据:)

关于 ORM,我想我会选择 Hibernate ... 我也听说过 Maven 或 Ant,它们能以什么方式帮助我?

任何建议/指南将不胜感激:-) 提前致谢。

编辑:我需要的是:一个 java 框架:

  • 有据可查/易于获得帮助/尽可能简单...
  • java 越多越好
  • Ajax 友好/构建漂亮 UI 的工具 ...
  • 国际化
  • 仍然是学生,技能的适销性可能很重要......

要构建的应用既是一个

  • 社区网站:web 2.0、CRUD
  • 电子商务网站

完整规格尚未完成。

【问题讨论】:

  • 如果您能简要描述一下您的需求,那就太好了,这样人们就可以向您提供最适合他们的建议。

标签: java orm user-interface frameworks


【解决方案1】:

这是一个非常难以回答的问题,最近遇到了您的情况,我将尝试提供一些见解。基本上,对于 Java,框架有很多选择,没有人能真正告诉你哪一个最适合你,我们能做的就是为你提供一些技术的细分。

以下是我在寻找您想要的相同答案时遇到的。

Java 有许多技术试图提供全栈解决方案。这些技术可以分解为其他技术,但将它们一起使用时效果很好。

基本上,Web 应用程序有 3 层,即表示层、业务层和数据层。表示层是前端,是用户所看到的。您通常可以混合和匹配这三层的技术。例如,您可以使用带有 IOC 和 Hibernate 的 Spring 框架的条带前端作为您的 ORM。

有许多很棒的技术可以用于表示层,包括 Spring-MVC、STRUTS、Stripes、Wicket、JSF/SEAM 和 Tapestry 等等。其中大多数使用 JSTL 为视图使用 JSP,但检票口除外,它实际上通过使用 Java“组件”(POJOS) 将 html 与逻辑完全分开。这两种方法都有优点和缺点。 wicket 方法的好处是您可以进行静态类型检查和完全分离 html,因此您可以将其交给您的设计师。

对于业务层,人们通常使用某种控制反转框架 (IOC) 进行依赖注入 (DI)。 IOC 的流行框架是 Spring 和 Seam,它们具有相关的技术,如 Spring-security,并且通常由其他技术支持。 Google Guice 似乎在直接 DI 框架中很受欢迎。

最后,对于数据层,大多数人倾向于使用 Hibernate 或 JPA。还有其他的,但我没有使用它们的经验,无法提供更多信息。

Tapestry 是另一个框架,它试图根据我的理解成为一个完整的堆栈,并采用类似 wicket(或者我猜 Wicket 采用类似 Tapestry)的方法。 Grails 是另一个使用 Groovy 并建立在 Spring 和 Hibernate 之上的全栈框架。如果你喜欢 Rails,Grails 还是不错的。

这些技术中的大多数都有大量可用信息和非常活跃的邮件列表/IRC 聊天室。您需要做的是查看它们,然后决定哪种方法适合您。这里没有人能告诉你你会喜欢什么。

如果您需要推荐,我希望有一天可以使用 Wicket/Guice/Hibernate 堆栈。

【讨论】:

    【解决方案2】:

    我最喜欢的绝对是春天。新的 Spring MVC 2.5 设置简单快捷,大量注释可帮助您以声明方式连接控制器,从而节省大量输入。它还集成了 Spring 容器,这绝对是我最喜欢的轻量级 J2EE 替代容器。我通常将 SpringMVC 与简单的 JSP 结合起来,但还有很多其他的视图技术可供选择。对于持久性,我通常使用 Hibernate。可能值得看看Spring ROO,它有点像没有 Groovy 的 Grails。 Spring Security 提供了一种很好且简单的声明式安全性方法,并集成到一大堆身份​​验证技术中。

    Maven 和 ant 都是构建工具,而 maven 还为您处理依赖项。您“只是”设置描述您想要的库和版本要求的描述符,maven 将为您下载所有库及其依赖项。但是,它会迫使您遵循特定的项目布局。对于蚂蚁来说,常春藤有依赖关系。

    【讨论】:

    • 我不认为 Maven 强迫你遵循任何特定的项目布局,只是如果你不这样做,你必须做更多的配置而不是约定。
    • 我听说你可以改变项目布局,甚至比依赖配置的重要数量还要多。我不是 maven 或任何其他项目依赖管理工具的粉丝。它们似乎最终都需要更多的工作,而不仅仅是手动处理依赖关系。
    【解决方案3】:

    我建议你看看Grails。 Grails 是一个“按惯例编码”的 Web 应用程序框架,构建在一组经过验证的 Java 框架(Spring、Hibernate 等)之上,并使用 Groovy 语言。

    Grails 的美妙之处在于您几乎不需要 Spring、Hibernate 等知识即可上手。但是之后,如果有必要,您仍然可以使用这些框架的全部功能。

    【讨论】:

    • 我想尽可能多地使用 Java :)
    • Groove 基本上是带有附加功能的 Java……而且您几乎可以在框架所需的核心类之外的任何地方使用纯 Java,它与 Groovy 无缝集成。
    【解决方案4】:

    后端一定要用Spring;他们的免费支持论坛上有一个很棒的社区(您也可以付费获得更正式的支持)。

    关于您使用 Hibernate 的决定,您可能希望针对 JPA 进行编码,以便将您的应用与 Hibernate(这是几种 JPA 实现之一)分离。

    如果你想要一个 Ajax 前端,值得一看 ZK 框架;它非常易于使用,无需学习 JavaScript,并且无需使用 DWR 等管道库。

    【讨论】:

      【解决方案5】:

      其他人使用 Spring 的建议是一个绝妙的主意。你会发现你实际上会一起使用许多不同的框架,因为每个框架解决的问题略有不同。

      我建议您在开始之前在每个框架或技术上投入一些时间,但您最终会希望让它们一起工作。例如,您可能需要一个 Struts + Spring + Hibernate 设置。配置它们可能会让人头疼。

      所以我建议您使用AppFuse,它有助于生成具有基本功能的基本应用程序。它可以节省大量时间。您当然需要了解为您配置的不同框架,因此这不是一个神奇的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-31
        • 1970-01-01
        • 2014-02-26
        • 2011-10-29
        • 1970-01-01
        • 2011-08-24
        • 1970-01-01
        相关资源
        最近更新 更多