【问题标题】:Can anyone recommend a simple Java web-app framework? [closed]谁能推荐一个简单的 Java web-app 框架? [关闭]
【发布时间】:2008-09-22 19:30:59
【问题描述】:

我正在尝试开始我希望在 Java 中相对快速的 Web 应用程序,但是我尝试过的大多数框架(Apache Wicket、Liftweb)都需要大量的设置、配置、并试图在 Maven 上把我的头包裹起来,同时让整个事情与 Eclipse 一起玩得很好,我整个周末都在试图达到我编写第一行代码的地步!

谁能推荐一个简单的 Java webapp 框架,它不涉及 Maven、极其复杂的目录结构或无数必须手动编辑的 XML 文件?

【问题讨论】:

    标签: java web-frameworks


    【解决方案1】:

    我自己没试过,但我觉得

    http://www.playframework.org/

    很有潜力……

    来自 php 和经典的 asp,它是第一个听起来很有希望的 java web 框架....

    由原始提问者编辑 - 2011-06-09

    只是想提供一个更新。

    我选择了 Play,这正是我所要求的。它只需要很少的配置,开箱即用。不同寻常的是,它避开了一些常见的 Java 最佳实践,而倾向于使事情尽可能简单。

    特别是,它大量使用静态方法,甚至对传递给方法的变量名称进行了一些自省,这是 Java 反射 API 不支持的。

    Play 的态度是,它的首要目标是成为一个有用的 Web 框架,而坚持常见的 Java 最佳实践和习惯用法是次要的。这种方法对我来说很有意义,但 Java 纯粹主义者可能不喜欢它,使用Apache Wicket 会更好。

    总而言之,如果您想构建一个 Web 应用程序,其便利性和简单性可与 Ruby on Rails 之类的框架相媲美,但使用 Java 并受益于 Java 工具(例如 Eclipse),那么 Play Framework 是一个不错的选择选择。

    【讨论】:

    • Play 框架难于学习和制动 JEE。它试图创建自己的生态系统,远离它。
    • 尝试调试 Play 2.0 框架代码。如果您不了解 Scala,您将很难使用它。
    【解决方案2】:

    (针对 Spring 3.0 更新)

    我也选择Spring MVC

    你需要从here下载Spring

    要将您的网络应用配置为使用 Spring,请将以下 servlet 添加到您的 web.xml

    <web-app>
        <servlet>
            <servlet-name>spring-dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>spring-dispatcher</servlet-name>
            <url-pattern>/*</url-pattern>
        </servlet-mapping>
    </web-app>
    

    然后你需要创建你的 Spring 配置文件/WEB-INF/spring-dispatcher-servlet.xml

    这个文件的第一个版本可以很简单:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/mvc     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    
       <context:component-scan base-package="com.acme.foo" />    
       <mvc:annotation-driven />
    
    </beans>
    

    Spring 会自动检测带有 @Controller 注释的类

    然后是一个简单的控制器:

    package com.acme.foo;
    
    import java.util.logging.Logger;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    @Controller
    @RequestMapping("/person")
    public class PersonController {
    
        Logger logger = Logger.getAnonymousLogger();
    
        @RequestMapping(method = RequestMethod.GET)
        public String setupForm(ModelMap model) {
            model.addAttribute("person", new Person());
            return "details.jsp";
        }
    
        @RequestMapping(method = RequestMethod.POST)
        public String processForm(@ModelAttribute("person") Person person) {
            logger.info(person.getId());
            logger.info(person.getName());
            logger.info(person.getSurname());
            return "success.jsp";
       }
    }
    

    还有details.jsp

    <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
    <form:form commandName="person">
    <table>
        <tr>
            <td>Id:</td>
            <td><form:input path="id" /></td>
        </tr>
        <tr>
            <td>Name:</td>
            <td><form:input path="name" /></td>
        </tr>
        <tr>
            <td>Surname:</td>
            <td><form:input path="surname" /></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="Save Changes" /></td>
        </tr>
    </table>
    </form:form>
    

    这只是 Spring 可以做什么的冰山一角......

    希望这会有所帮助。

    【讨论】:

    • Spring 无疑是一个很好且广泛使用的框架,但它被要求提供一个简单的 Java webapp 框架。 ;-)
    • details.jsp 应该去哪里?我已经按照描述进行了设置并收到:2012-09-24 21:57:31.236:WARN:oejs.ServletHandler:/details.jsp java.lang.NullPointerException at java.net.URLEncoder.encode(URLEncoder.java:第205章……
    • 这正是原始发布者想要避免的问题。需要在这里编写大量的 XML,那里的 XML,大量样板代码,使简单的任务变得复杂,而复杂的任务变得不可能。不应该反过来吗?
    【解决方案3】:

    真的喜欢Stripes。整个设置包括一些将 XML 剪切并粘贴到您的应用程序的 web.xml 中,然后您就可以离开了。不需要配置,因为 Stripes 是一个约定优于配置的框架。覆盖默认行为是通过 Java 1.5 注释完成的。文档很棒。我花了大约 1-2 小时阅读教程并设置了我的第一个应用程序。

    我还不能与 Struts 或 Spring-MVC 进行深入比较,因为我还没有在其中构建完整的模型(就像我在 Struts 中所做的那样),但它看起来可以扩展到那个级别的架构相当不错。

    【解决方案4】:

    您正在搜索http://grails.org/

    您使用 groovy 进行编码,这是一种基于 Java 的动态语言,可与 Java 代码、类和库一起顺利运行。语法既不难学,也与 Java 相差甚远。试一试,让网站启动并运行需要几分钟。只需关注http://grails.org/Installationhttp://grails.org/Quick+Start

    Greetz,加德

    【讨论】:

    • 谢谢,但我真的想要一个 Java 框架,或者是 Scala。我需要一些学习曲线最短的东西,并且必须学习一门全新的语言,不管它多么简单,这不是我的想法。
    • Groovy 确实与 Java 非常相似,以至于您可以编写有效的 Java 语法,然后随着您变得更加自信,使其更加 Groovy。 Grails 确实是一个很好的网站快速原型设计框架。
    • FWIW,你可以用 Java 编写 groovy 代码——它会编译得很好。
    • 反之亦然,您可以在 groovy 中编写 java 代码。 groovy 就像 java++。
    • @sanity,Groovy 比 Scala 更接近 Java。 Grails 也是基于 Spring 和 Hibernate 构建的,后者是 Java 企业应用程序的事实标准,因为它坚如磐石。
    【解决方案5】:

    查看 WaveMaker 以构建快速、简单的网络应用程序。他们有一个基于浏览器的 Dojo/JavaScript 小部件拖放设计器,后端是 100% Java。

    【讨论】:

      【解决方案6】:

      条纹:相当不错。务实的程序员出版了一本关于这方面的书:http://www.pragprog.com/titles/fdstr/stripes。没有 XML。需要 java 1.5 或更高版本。

      tapestry : 尝试过旧版本 3.x。我听说当前的 5.x 版本是 Beta 版,而且相当不错。

      在照顾 maven、没有 xml 和快速缠绕你的头方面,条纹应该更好。

      BR,
      ~A

      【讨论】:

        【解决方案7】:

        Grails 是为 Groovy 而不是 Java 编写的。 AppFuse 只是减少启动任意数量的 Webapp 框架所需的设置时间,而不是推广其中任何一个。

        我建议使用 Spring MVC。遵循编写良好的教程后,您将拥有一个简单易用的模型,该模型会自动连接(无需 XML 配置!)到您喜欢的任何视图技术中。

        想在您的客户列表中添加“删除”操作吗?只需将一个名为“delete”的方法添加到您的客户控制器,它就会自动连接到 URL /customers/delete。

        需要将您的请求参数绑定到一个对象上?只需将目标对象的实例添加到您的方法中,Spring MVC 将使用反射来绑定您的参数,使编写逻辑就像客户端传递一个强类型对象一样简单。

        厌倦了所有强制的 MVC 分工?只需让您的方法返回 void,然后将您的响应直接写入 servlet 的 Writer,如果这是您的事情。

        【讨论】:

          【解决方案8】:

          我喜欢 Spring MVC,使用 2.5 的特性几乎没有涉及到 XML。

          【讨论】:

            【解决方案9】:

            Stripes Framework 是一个出色的框架。所涉及的唯一配置是在 web.xml 中粘贴几行。

            这是一个非常直接的基于请求的 Java Web 框架。

            【讨论】:

              【解决方案10】:

              Apache Wicket、Liftweb)需要大量的设置和配置

              我不同意,我将 Wicket 用于我的所有项目,并且从未回头! 设置不需要太多,甚至不需要一个小时来设置一个完整的环境来使用 Wicket..

              【讨论】:

              • 同意,我几天前才开始使用它,不到一个小时就启动并运行了我的环境(Wicket + Wicket-Spring + Hibernate)。我恋爱了。
              • ...直到您找到一些非凡的东西。 Wicket 并不简单。
              • 一小时很长。 Play Framework 大约需要 2 分钟。
              • ...直到您需要将应用程序扩展到多个服务器或多个用户。那么 Wicket 就不再是你的朋友了。
              【解决方案11】:

              看看 Ninja Web 框架。

              它是Rails 传统的纯Java MVC 框架。它不使用任何基于 xml 的配置,并且拥有您立即开始所需的一切:会话管理、安全管理、html 呈现、json 呈现和解析、xml 呈现和解析。它还具有内置的测试环境,并且与传统的 servlet 容器 100% 兼容。

              虽然它使用了 Maven - 但是正确使用 Maven 使软件开发变得超级简单。它还允许您立即使用任何 Ide :)

              顺便说一句 - 开发 Ninja 非常有效率 - 更改您的代码并立即查看结果。

              查看:http://www.ninjaframework.org

              【讨论】:

              • 它让我想起了 Rails。美丽的。但没有书或其他详细的参考资料。
              【解决方案12】:

              我喜欢编写普通的旧 servlet+winstone servlet 容器。从那里我在需要时使用模板(速度、XSLT 等)和数据库访问(休眠、扭矩等)库,而不是进入实际框架。

              【讨论】:

              • 具有 Velocity + Play 风格 URI 映射的最小 Java“框架”:Drumlin.
              【解决方案13】:

              试试Apache Click

              它类似于 Wicket,但效率更高且易于学习。

              【讨论】:

              • 使用 Click 的主要原因是它是少数几个我了解它的工作原理的框架之一(不是真的,但至少在一定程度上感觉很舒服)。
              【解决方案14】:

              Tapestry 5 可以使用 maven 原型快速设置。请参阅 Tapestry 5 教程: http://tapestry.apache.org/tapestry5/tutorial1/

              【讨论】:

                【解决方案15】:

                我真的不明白让 maven + eclipse 工作有什么大不了的,只要你不必过多地更改 pom.xml :)

                用户 maven 的大多数框架都有可以生成存根项目的 maven 原型。

                所以基本上步骤应该是:

                1. 安装 maven
                2. 将 M2_REPO 类路径变量添加到 eclipse
                3. 使用原型生成项目
                4. 将项目导入eclipse

                至于 Wicket,没有 maven 就没有理由不能使用它。 maven 的好处是它会处理所有依赖项,因此您不必这样做。另一方面,如果您只想制作几个页面的原型,那么 Wicket 可能会过大。但是,如果您的应用程序最终增长,Wicket 的好处将随着每个添加的表单、链接或页面而不断显现:)

                【讨论】:

                  【解决方案16】:

                  IMO 的正确答案取决于两件事: 1.你要写的web应用的目的是什么? 您只是告诉我们您想快速编写它,而不是您实际尝试做的事情。例如。它需要数据库吗?它是某种商业应用程序(提示:也许搜索“脚手架”)? ..还是游戏? ..或者你只是在尝试某种东西? 2. 你现在最熟悉的框架是什么? 通常花费最多时间的是阅读文档并弄清楚事情(真正)是如何工作的。如果您想快速完成,请坚持您已经熟悉的事情。

                  【讨论】:

                    【解决方案17】:

                    在经历了 Struts、Tapestry 3/4、JSF、JBoss Seam、GWT 的许多痛苦经历之后,我现在会坚持使用 Wicket。 Eclipse 的 Wicket Bench 很方便,但不是 100% 完成,但仍然有用。用于部署到 Tomcat 的 MyEclipse 插件是 ace。没有 Maven 只需部署一次,更改会自动复制到 Tomcat。魔法。

                    我的建议:Wicket 1.4、MyEclipse、Subclipse、Wicket Bench、Tomcat 6。安装需要一个小时左右,但其中大部分将是下载 tomcat 和 Eclipse 插件。

                    提示:不要使用 Wicket Bench 库,手动将 Wicket 1.4 库安装到项目中。

                    这个网站花了我大约 2 个小时来写 http://ratearear.co.uk - 不要下班去那里!而这个大约需要 3 天的工作时间http://tnwdb.com

                    祝你好运。蒂姆

                    【讨论】:

                      【解决方案18】:

                      web4j 工具以简单易用为卖点。关于它的几点:

                      • 使用单个 xml 文件(所有 servlet 所需的 web.xml 文件)
                      • 不依赖于 Maven(或任何其他 3rd 方工具/jar)
                      • 全栈,开源 (BSD)
                      • 任何全栈 Java 框架中的最少类数
                      • SQL 放在纯文本文件中
                      • 鼓励使用不可变对象
                      • 需要最少的工具集(JSP/JSTL、Java、SQL)

                      【讨论】:

                        【解决方案19】:

                        如果您喜欢轻松地进行 CRUD 并创建快速原型应用程序,那么 Grails 是您的理想之选,它也可以与 Eclipse 配合使用。按照此处的“构建您的第一个 Grails 应用程序”教程http://grails.org/Tutorials,您可以在不到一个小时的时间内启动并运行您自己的应用程序。

                        【讨论】:

                          【解决方案20】:

                          你可以试试JRapid。使用领域驱动设计,您可以定义您的应用程序,它会为您的 Web 应用程序生成完整的堆栈。它使用已知的开源框架并生成一个非常漂亮且易于使用的 UI。

                          【讨论】:

                            【解决方案21】:

                            AppFuse 我没用过它,它旨在促进 Java Web 开发附带的令人讨厌的设置。

                            【讨论】:

                              【解决方案22】:

                              试试 Wavemaker http://wavemaker.com 免费,易于使用。使用 WaveMaker 构建美观的 Java 应用程序的学习曲线只需几周!

                              【讨论】:

                              • 这是非常主观的,但我发现 Wavemaker 小部件真的很丑 :-)
                              【解决方案23】:

                              【讨论】:

                                【解决方案24】:

                                试试 Vaadin!非常简单,您也可以轻松地使用 UI! www.vaadin.com

                                【讨论】:

                                • 因为 GWT 已经死了,所以不建议这样做。
                                【解决方案25】:

                                前几天我发现了一个非常轻量级的 Java Web 框架。

                                它被称为 Jodd,它为您提供了 Spring 所期望的许多基础知识,但在一个非常轻巧的包中,小于 1MB。

                                http://jodd.org/

                                【讨论】:

                                • 它不仅仅是一个网络框架;有ioc容器、aop引擎、db映射引擎、html处理工具(decorator、minifier...)等
                                • 乔德确实令人印象深刻
                                【解决方案26】:

                                还可以查看activeweb。它简单,轻量级,并利用了我喜欢的其他一些东西(guice,maven ...)。它的控制器可以提供您想要的任何内容,包括 json、Html、纯文本、pdf、图像...您可以制作 restful 控制器,甚至使用注释来确定控制器方法接受哪些 http 方法(POST、GET、...)。

                                【讨论】:

                                  【解决方案27】:

                                  我想坚持使用 JSP、servlet 和 JSTL 在与我合作过的几家公司处理了超过 12 年的 Web 框架之后,我总是发现自己又回到了旧的 JSP 上。 是的,有些事情您需要自己编写,而某些框架会自动完成。 但是如果你正确地处理它,并在你的 servlet 之上构建一些基本的实用程序,它会提供最好的灵活性,你可以轻松地做任何你想做的事情。 我没有发现在任何框架中编写的真正优势。我一直在寻找。

                                  看了上面所有的答案也意味着没有一个真正的框架是好的和规则的。

                                  【讨论】:

                                    【解决方案28】:

                                    你试过 DWR 吗? http://directwebremoting.org

                                    【讨论】:

                                      【解决方案29】:
                                      【解决方案30】:

                                      最近我发现AribaWeb 框架看起来很有前途。它提供了良好的功能(甚至是 AJAX)、良好的文档。用 Groovy/Java 编写,甚至包括一个 Tomcat-Server。试图进入 Spring 真的让我很生气。

                                      【讨论】:

                                        猜你喜欢
                                        • 1970-01-01
                                        • 2010-11-07
                                        • 1970-01-01
                                        • 2010-09-16
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2010-10-17
                                        • 2010-10-17
                                        相关资源
                                        最近更新 更多