为简单易用的应用程序选择哪个J2EE Web开发框架?

时间:2009-11-07 15:33:29

标签: java web-applications java-ee web-frameworks

我想在J2EE上编写一个具有以下特征的简单Web应用程序:

  1. 我不需要任何AJAX,它甚至可以在浏览器上禁用JavaScript。
  2. 这是一个简单的CRUD应用程序
  3. 我需要完全控制每个元素在页面上的布局方式 - 不要影响GUI的外观。
  4. 我可以使用普通的旧JDBC进行数据访问 - 不需要o / r映射器
  5. 页面的书签是必要的(无论书签是否合理,都是如此)。
  6. 我的很多用户都非常使用标签式浏览。
  7. 我希望框架做的是:

    1. 给我一个很好的抽象来检索GET和POST参数
    2. 给我一个很好的工具来向用户显示验证错误和其他错误
    3. 提供一组标准安全功能 - 防止跨站点脚本,防止用户将下拉输入设置为下拉列表中没有的值,et.al
    4. 在功能不太强大的服务器上,在200多个并发用户中表现良好,可以很好地扩展。 (没有集群 - 单个节点,具有多个生产应用程序的共享应用服务器)
    5. 稳定;因为我希望该应用程序在没有主要重构的情况下运行至少3 - 4年
    6. 我看了几个框架,这就是我的感受..

      1. Plain Servlets / JSP - 我需要自己编写代码 - 这需要时间,并且可能有很多错误
      2. Struts(1.x) - 与普通servlet方法相比,没有提供太多优势;虽然它确实将POST和GET参数映射到形成bean,但我正在寻找的其他功能并不存在;我需要花很多时间自己编码
      3. JSF - 由于我读过的性能问题,我很害怕它。视图构造和维护似乎占用了太多的内存。此外,JSF不适用于书签和标签浏览器。
      4. Tapestry - 我看了一下Tapestry 5.虽然看起来不错,但它似乎与标签式浏览和书签不兼容。虽然肯定支持“激活上下文”,但它只是一个字符串。它无法使用GET参数和隐藏的表单字段(尚未)恢复状态。此外,似乎对框架的寿命感到担忧 - 它似乎在没有向后兼容性的情况下发展。
      5. Apache Turbine - 一开始看起来不错;但事实上,它已经很老了而且没有多少活动让我害怕。
      6. 对什么对我有好处的任何建议? 谢谢!

        PS:我被限制使用根据Apache许可证(最好是v2)或BSD许可证获得许可的

8 个答案:

答案 0 :(得分:3)

Spring-MVC是另一个考虑的选择

答案 1 :(得分:3)

Stripes是一个MVC java Web框架,它是Java Web开发的“Convention over Configuration”模式的先驱。 Spring MVC采用了一些这些模式,但我仍然更喜欢Stripes,因为它做了一件事并做得很好。

答案 2 :(得分:3)

这是一个相当新的java框架,但我认为它看起来非常棒

playframework

答案 3 :(得分:2)

Grails也许?如果你不想使用o / r mapping(GORM),你可以使用普通的旧JDBC

答案 4 :(得分:2)

检票口怎么样?

http://wicket.apache.org

  • 基于组件的框架,标记和代码完全分开。每个“面板”组件都绑定到一个或多或少的纯HTML标记文件,这样您就可以根据需要自定义外观。
  • 鼓励OOP,轻松定制组件构建和代码重用。
  • 带反馈的验证框架。
  • 对无javascript浏览器内置“后备”行为的AJAX支持
  • 支持可收藏页面

答案 5 :(得分:0)

  

JSF - 由于我读到的性能问题,我很害怕它。视图构造和维护似乎占用了太多的内存。此外,JSF不适用于书签和标签浏览器。

尝试Seam framework

  • 改进了效果(增加了会话范围)
  • 修复了JSF,以便与博彩公司和标签式浏览器配合使用
  • 许多其他专业人士:)

Seam很好,有两个原因:

  1. 它可以让您快速创建应用程序(基本CRUD,如RoR或Grails风格)
  2. 这将是进一步发展的良好基础。
  3.   

    我想写一个简单的网页   应用程序,在J2EE上,与这些   特点:1。我不需要任何AJAX,甚至可以使用JavaScript   在浏览器上禁用。

    使用JSF好的库(Richfaces或Icefaces)编写JavaScript代码可以减少到最少。为什么在浏览器上禁用JavaScript?

      

    2。这是一个简单的CRUD应用程序

    Seam非常适合通过seam-gen工具生成CRUD应用程序。

      

    3。我需要完全控制每个元素的布局方式   页面 - 在GUI上没有妥协   外观和感觉。

    这适用于CSS代码。以facelets为模板,您可以减少工作量。

      

    4。我可以使用普通的旧JDBC   数据访问 - 没有o / r映射器   必要的简单CRUD   应用程序ORM非常酷   功能,Seam你会得到它   自由。但ORM不是强制性的。

         

    5。页面的书签是   必要的(在任何有意义的地方)   书签,即)。

    如上所述Seam不再是问题。在“普通”中,JSF thre只是POST请求,这是一个问题。

      

    6。我的很多用户都非常使用标签式浏览。

    Seam引入了新的范围(会话和buissines流程),所以现在可以打开几个选项卡并同时执行多个任务/流程。

      

    我希望框架做的是:      1.给我一个很好的抽象来检索GET和POST参数

    这是JSF的特色。

      

    2。给我一个很好的设施   显示验证错误等   对用户的错误

    Seam与Hibernate Validator集成,并且非常支持消息和i18n。

      

    3。给出一套标准   安全功能 - 防止跨站点   脚本,防止用户   将下拉输入设置为值   下拉列表中没有,   et.al

    IMO JSF库在这个领域很不错。

      

    4。性能良好,规模良好   超过200个并发用户,在   不那么强大的服务器。 (没有集群    - 单节点,具有多个生产应用程序的共享应用服务器)

    Perfomant-是的。 Seam修复brokes无状态应用程序设计模式促进状态应用程序。从性能视图中使用POJO状态类似于Struts或Spring等其他框架。对于真实世界的用例,请参阅seam in production page

      

    5。保持稳定;因为我喜欢   让该应用程序运行   至少没有重要的重构   3 - 4年

    Seam和JSF是稳定的技术。

答案 6 :(得分:0)

谢谢大家。我明天将使用Spring MVC,Stripes(可能还有Wicket)构建一些示例应用程序,并在行动中看到它们:)

我会用我发现的内容更新这个答案..

谢谢! -Pradyumna

PS:令人失望的是我无法在stackoverflow中将多个答案标记为“ANSWERED”.. :(我将不得不等待,看看我最终决定了什么......

答案 7 :(得分:0)

当您尝试使用Stripes时,您可以使用Rayures(使用Maven)或Stripes-Quickstart(使用Ant)快速入门。