18

我希望开始使用 Java 进行 Web 开发——我有一些基本的 Java 知识,所以这不是问题,但是在破译用于 Web 应用程序的各种技术时,我不知所措。

我有哪些选择?它们是如何工作的?是否有任何类似于 Django/Ruby on Rails 的框架可以用来简化事情?

任何有助于理解可用内容的链接将不胜感激。

4

14 回答 14

32

Java 框架有两种基本风格。一个称为“动作”框架,另一个称为“组件”框架。

动作框架专注于将 HTTP 请求映射到 Java 代码(动作),并将 HTTP 请求绑定到 Java 对象。Servlet 是 Action Framework 中最基本的,也是所有其他框架的基础。

Struts 是最流行的 Action 框架,但我不能凭良心向任何人推荐它。Struts 2 和 Stripes 更现代,并且彼此非常相似。两者的配置都很轻,开箱即用,易于使用,提供了非常好的绑定功能。

组件框架专注于 UI,并倾向于促进基于高级 UI 组件(按钮、列表框等)的更多事件驱动的架构。这些框架倾向于将来自编码器的实际 HTTP 请求隐藏在几个层下。它们使开发更高级的 UI 变得更加容易。.NET 是 Windows 的组件框架。在 Java 上,流行的组件框架是 JSF(一种标准)和 Wicket。

通常,如果您要创建“网站”。这更类似于呈现信息(如博客或社区网站),Action 框架工作得更好。这些站点往往更简单,经常被添加书签,需要“漂亮的 URL”等。这通常更容易使用 Action 框架来完成。

对于具有大量 UI 元素和复杂工作流程的后台应用程序,组件框架要好得多。您会发现,尤其是使用工具,这些风格的应用程序将使用组件框架更快地组合在一起。但是组件框架有更复杂的请求工作流,有时依赖隐藏状态、大量的 POST 操作等。许多具有“可怕”的 URL,有时会创建难以添加书签的页面。

这两个框架都可以用于这两个任务,只是有些框架比其他框架更适合该任务。

这些框架都没有直接解决持久性问题,但许多框架具有与 JPA/EJB3 或 Hibernate 紧密合作的扩展模块或惯用语。

于 2008-10-02T14:39:24.263 回答
13

您的基本 Java Web 技术是 servlet。Servlet 允许您编写响应各种 HTTP 事件(doGet、doPost、doPut 等)的 Java 代码。它们通常用于 MVC 架构中的控制器。链接:http: //java.sun.com/products/servlet/

JSP 允许您使用嵌入式 Java 编写 HTML,而不是相反(在 servlet 中)。JSP 已通过 JSF 进行了扩展,以包含最近的架构进步。这与 PHP 和 ASP 在同一行。这是 MVC 架构的视图部分。链接:http: //java.sun.com/developer/technicalArticles/GUI/JavaServerFaces/

许多更复杂的应用程序使用 Enterprise Java Beans (EJB) 进行会话管理、集群等。这本身不是一种 Web 技术,但在处理更复杂的 Web 应用程序时,您会看到它齐头并进。替代方案包括 Spring 等框架。EJB:http ://docs.jboss.org/ejb3/app-server/tutorial/ Spring:http ://www.springframework.org/

此外,您还需要熟悉 ORM 技术(在 servlet 和 JSP/JSF 之后)。目前领先的 ORM 框架是 Hibernate。这使您可以将 SQL 表映射到 java 对象并相应地与它们进行交互。这是更高级的东西,所以当你试图了解 EJB/Spring 等时保存它。链接:http ://www.hibernate.org/

编辑:我忘了定义 ORM。它代表对象关系映射/映射器(无论您喜欢使用什么版本的“映射”:)

于 2008-10-02T13:34:40.767 回答
8

从 Java 类中的逻辑支持的 JSP 开始。或者使用 servlet。

使用 JSP 和 Servlet 的优点是您可以了解所有框架在幕后所做的事情。这种理解对于弄清楚如何在该特定框架中执行 X 至关重要。

此外,JSP 非常简单。当您将视图与业务逻辑混淆时,您可以轻松地看到自己在做什么,并且非常容易地看到它。

并且相当多的框架(Struts、Spring MVC)使用 JSP 作为他们的视图技术。这是使用 Java 进行 Web 开发的自然第一步。

于 2008-10-02T19:05:01.020 回答
7

我不知道有没有像 Django for Java 一样好的东西,但是 Spring 有一个基于 J2EE 构建的轻量级 Web 框架

http://www.springframework.org/about

一个灵活的 MVC Web 应用程序框架,建立在 Spring 的核心功能之上。该框架通过策略接口高度可配置,并适应多种视图技术,如 JSP、Velocity、Tiles、iText 和 POI。请注意,Spring 中间层可以轻松地与基于任何其他 Web MVC 框架(如 Struts、WebWork 或 Tapestry)的 Web 层相结合。

于 2008-10-02T13:30:52.430 回答
3

圣杯一样的东西?

还有春天的项目

于 2008-10-02T13:30:19.483 回答
2

你可以试试 Jboss Seam:http ://www.seamframework.org/Documentation/GettingStarted

如果您使用 Ecipe 作为您的 IDE,则可以通过 Jboss Tools 进行良好的集成,或者您可以使用 Seam 附带的 Seam-Gen 工具。这允许您定义一个(或多个)数据库表,并使用一些简单的命令,从中构建一个完整的可运行 Web 项目。这是让球滚动的好方法。

于 2008-10-02T14:19:59.927 回答
2

您需要从servlet 和 JSP开始。Java中有许多Web框架,它们都基于这两种技术。

于 2008-10-02T13:32:00.307 回答
1

在研究这些框架之前,为什么不先研究一下它是从哪里开始的呢?首先尝试使用 servlet 进行编程,这样您就可以了解大多数 Java Web 框架的核心。它将帮助您更好地理解 J2EE。

于 2009-04-15T13:53:53.487 回答
1

还有 Java Server Faces

http://en.wikipedia.org/wiki/Java_Server_Faces

于 2008-10-02T13:32:53.500 回答
1

这是一个非常开放的问题。简短的回答是“是的”,从编写 HTTP 请求级别的内容到 Java 中的内容管理系统,都有框架、库和标准可以做所有事情。

为此,您还可以在 JVM 上使用其他语言(例如 Python、Ruby 等)。

对于一些纯 Java 技术,请研究 JSP/Servlets、Struts、Struts2(这是 Webwork 的更新版本)、Spring MVC、Tapestry、web4j、Wicket。

还有其他构建在 JVM 上的框架,但使用 Java 以外的语言,例如 Grails。

要开始,我会下载 Eclipse(最新版本)和 Tomcat。在 Eclipse 中创建一个新的 Web 应用程序。有一些指南可以帮助您入门。

从学习 JSP 和 Servlet 的工作原理开始,它们有点低级,并不是真正的框架,但可以让您快速启动和运行。从那里调查并选择您的框架。

Spring MVC 很容易设置和运行。我确定还有其他人。

于 2008-10-02T13:40:08.087 回答
1

如果您已经了解 Ruby On Rails,则可以将它与JRuby一起使用,并使用Warbler部署到 Java 服务器(如 Tomcat)。

在纯 Java 中,Wicket有一个很好的方法并且越来越流行。

于 2008-10-03T09:46:24.363 回答
0

J2EE 是标准。您可以使用它来构建具有 Java 服务器页面、Servlet 和 EJB 的应用程序。

Struts 也是一个非常流行的使用 JSP 和 Servlet 的框架。设置起来有点棘手,但对于中型站点来说,它是一个非常好的选择。

http://en.wikipedia.org/wiki/Struts

于 2008-10-02T13:30:57.297 回答
0

一般来说,Java 更加基于组件,即您没有可以为您完成所有工作的框架(例如,您可能必须自己选择一个数据库访问框架)。对于数据访问,我推荐 Hibernate 或 iBATIS。

对于前端,实际上有数百个框架。研究 JSF、Wicket、Struts 2、Stripes - 使用哪一种取决于您的具体需求,因为它们都有不同的优势。

对于业务层,我推荐 Spring Framework,它非常全面并且有很好的参考指南/教程 :)

于 2008-10-02T13:34:53.200 回答
0

我在大学学习 Java 的时候是 1.1.5 版本。我最近开始尝试为 web 编程,但直到我阅读Head First Servlets 和 JSP才有意义。使用 Java 进行 Web 开发涉及的事情比我意识到的要多得多,如果没有这本书,我可能会退出并只使用 PHP。

于 2009-04-15T18:08:27.710 回答