Java EE Web开发,我从哪里开始?我需要什么技能?[关闭]


215

我想至少在基本级别上学习如何构建Java Web应用程序(来自.NET背景)。我希望能够从头开始构建,部署一个简单的CMS类型的应用程序。

我到底需要学习什么?

Tomcat似乎是Java的良好Web服务器。

网络有哪些选项?我知道在ORM中有Hibernate

Java是否有MVC?那JSP呢?MVC和JSP可以在一起吗?NetBeans

也许一本书涵盖了所有这些?

Answers:


260

(于2020年3月更新)

首先,自2019年9月起,“ Java EE”已从版本8开始重命名为“ Jakarta EE ”。从历史上看,术语“ J2EE”也涵盖了1.2至1.4版本。“ Java EE”涵盖版本5到8。另请参见Java Platform,Enterprise Edition,Wikipedia上的History

我到底需要学习什么?

我假设您已经熟悉诸如HTMLCSSJS之类的客户端技术,因此在此不再赘述。我还假设您已经熟悉基本的Java。遵循Oracle的Java教程,如果可能的话,也可以获取OCP书籍或课程。

然后,您可以从JSP / Servlet开始学习Java Web开发的基本概念。好的教程可以在Oracle的Java EE 5教程第二部分第3章至第8章以及Coreservlets.com(初学者,中级高级,也包括JDBC)中找到。请注意,自Java EE 6起,为了支持JSF从Java EE教程中删除了 JSP,并且此后JSP基本上没有改变。因此,您可以安全地使用相当古老的Java EE 5教程。关于JSP的最重要的事实是,自2003年以来,正式禁止使用<%scriptlet 在JSP文件中编写纯Java代码%>。另请参见如何避免JSP文件中的Java代码? 因此,任何仍覆盖脚本的教程都应该跳过,因为它们肯定会使您陷入学习不良做法的螺旋式下降。

在Stack Overflow上,您还可以找到有关JSPServletsJSTLEL的漂亮Wiki页面,您可以在其中学习基本知识并找到更多有用的链接。


Tomcat似乎是Java的良好Web服务器。

它是。但是,它的功能有限。它基本上是一个准系统的servlet容器,仅实现巨大的Java EE API的JSP / Servlet部分。如果您想使用EJB或JPA,则需要选择另一个,例如WildFlyTomEEPayaraLibertyWebLogic等。否则,您必须使用Spring而不是Java EE。也就是说,如果不修改核心引擎就无法在准系统servlet容器中安装EJB,以防Tomcat基本上是在重塑TomEE。另请参见Java EE到底是什么?如何通过Maven正确安装和配置JSF库?以及如何在Tomcat上安装和使用CDI?


我知道在ORM中有Hibernate。

以前,在J2EE时代,当JPA不存在并且EJB2糟糕时,Hibernate是一个独立的框架,经常与Spring结合使用以取代EJB。自从Java EE 5(2006)中引入JPA以来,Hibernate已成为JPA实现。您可以在Jakarta EE教程第八部分中学习JPA 。此外,基于从Spring中学到的经验教训,EJB3得到了很大的改进。另请参见什么时候有必要或方便地同时使用Spring或EJB3或全部一起使用?


Java是否有MVC?那JSP呢?MVC和JSP可以在一起吗?JavaBeans?

您可以,但是在将模型与视图(转换,验证,更改侦听器等)联系起来时,这是对轮子的大量改造。Java EE的MVC框架称为JSF。在Java EE 6之前,它曾经在JSP上运行,这是相当传统的视图技术。JSP已被Facelets取代。您可以在Jakarta EE教程第三部分第7-17章中学习JSF 。顺便说一下,您也可以在Tomcat上使用JSF,只需要单独安装即可。安装说明可以在Mojarra主页上找到。WildFly,TomEE,Payara,Liberty,WebLogic等作为完整的Java EE实现,已经提供了JSF(以及CDI,BV,JSONP,JAX-RS,EJB,JPA等),因此您不需要单独安装。另请参阅如何通过Maven正确安装和配置JSF库?


也许一本书涵盖了所有这些?

有几本书。我建议先从一本书侧重于雅加达EE一般来说,一本书更侧重于JSF,和一本书更侧重于JPA。确保您选择有关该主题的最新书籍。首先调查最新的可用版本,然后确保所选择的书涵盖了该版本。因此,尽管目前已经有Jakarta EE 8和JSF 2.3可用,但是绝对不要选择Java EE 5或JSF 1.0左右的旧书。

最后但并非最不重要的一点,请忽略业余爱好者维护的代码片段抓取网站,这些网站主要关注广告收入而不是教学,例如roseindia,tutorialspoint,javabeat,journaldev,javatpoint,codejava等。通过干扰广告链接/标语和包含scriptlet的 JSP代码片段。

也可以看看:


太好了!有用,谢谢。在.Net中,通常Wrox Press的书可以涵盖.net中的所有知识。一本很厚的书。
gfan

5
StackOverflow没有引脚固定功能吗?希望这样做,所以我可以固定这个答案。谢谢!
dww

可以替代JavaEE 5教程。我知道我是菜鸟,而且你们都很好。但是...试图从该教程中学习。它非常锁定并取决于某些设置。因此,我需要学习NetBeans。然后我需要放弃我的服务器,并随意迁移到glassfish,试图找到要运行的示例代码,并从最简单的方法中学习。我无法在服务器上运行。相反,我遇到了一个叫做maven build的东西。我以为我试过了,导致日食疯了!aparently我需要学习Maven作为很好,而这一点,是其他与魔鬼grandmo ...
小子

@brat:答案包含替代品和书籍的链接。
BalusC

好。只有一个涵盖很多。Coreserv ...不得不在这里和那里收拾片段。我现在正忙着看官方JavaEE tut :)只是为了找出需要下载的SDK,要运行示例代码,其GlassFish服务器不能与JDK 10一起使用:(,启动时为NullPointerException。发现了一个hack stackoverflow.com / questions / 47458119 / ...,所以我需要下载...等等,依此类推。我想我只是因为跳过篮球学习而有点沮丧。:(。他们没有让noobs x)。干杯:)
小子

28

我到底需要学习什么?

最少

  • Java语言
  • Java API,包括用于数据库访问的JDBC
  • IDE或文本编辑器+ Ant
  • Java EE,基本上是servlet和JSP
  • Servlet容器(例如Tomcat)

Tomcat似乎是Java的良好Web服务器。

这是“体面的”。如果您不喜欢EJB,则可能无需学习其他任何知识。Glassfish 3最近似乎很酷,但是我还没有玩过。注意,它比Web服务器“更多”。它是一个Servlet容器(意味着它可以使用Servlet技术运行应用程序)。

网络有哪些选项?

大约有无数不同的框架。确实,选择一个真的很“困难”。尝试全部尝试非常诱人,但最终不可行。

我知道ORM处于休眠状态。

我有点反对ORM,但是如果需要“完整” ORM,则需要Hibernate。您还可以尝试“部分” ORM,例如Spring的JDBC支持或iBatis。

Java是否有MVC?JSP呢?MVC和JSP可以在一起吗?豆子?

是的,大多数Java Web框架都支持MVC。Spring的MVC很好,但是我不能推荐其他任何东西(尤其是Struts 1!)。JSP只是一个HTML(或XML)模板引擎。带有嵌入式Java代码的老式JSP太酷了;具有标记文件和库的现代JSP相当不错。

我想大多数框架都将允许您使用JSP来呈现V。Spring的MVC和Struts可以。有些会让您也使用其他东西(Velocity,Freemarker等)。

Bean只是对象的约定。基本上,这意味着您正在使用getter和setter(或某些替代方法),并且遵循一些规则。这些应该让您的对象被某些工具操纵。典型的示例是GUI,一些工具将允许您构建GUI组件来编辑任意bean(即它们将渲染表单以编辑其字段)。


16

您需要HTML,CSS和JavaScript-所有常见的Web开发嫌疑人。

Tomcat确实内置了Web服务器,但是它是servlet / JSP引擎。Apache是​​纯Web服务器。

您需要学习JSP,这是用于生成servlet的模板语言,该servlet生成HTML输出。您将要使用JSTL而不是scriptlet来编写它们。

如果要进行CRUD应用程序,则需要学习JDBC和关系数据库。您应该在尝试Hibernate或任何其他ORM之前执行此操作,因为这是构建它们的基础。

JavaBeans只是Java对象的标准。

如果您愿意,我建议使用Spring框架。


您说tomcat确实内置了Web服务器,那又是什么?我以为那是一个Web服务器?
mrblah

6
@mrblah-Tomcat是一个servlet引擎。它用于处理servlet类(将jsp转换为servlet类)并将输出提供给浏览器。除此之外,它还像Web服务器一样提供所有常规文件(图像,html,css等)的服务。它与具有php模块的Apache相当。
Nemi

13

Java是否有MVC?

Java具有不同的框架,例如Struts2Spring MVC

JSP呢?

JSP是模板库。您可以尝试使用FreeMarkerVelocity等几种替代方法。AFAIK Freemarker是新兴的优秀模板库。它比JSP轻巧。检查此FreeMarkerJSP的开放替代品-JavaWorld

MVC和JSP可以在一起吗?

我将MVC作为前面提到的框架。所有框架都支持JSP,但是您需要在相应的框架文档中检查对其他模板库的支持。AFAIK Struts2对Freemarker有很好的支持。

豆子?

我对此了解不多。但是使用bean,我们可以直接将表单数据映射到数据库。

也许一本书涵盖了所有这些?

每个框架都有自己的书。对于Struts2的 - 在Struts 2在行动

字符串MVC-看看这些问题,为Spring和Spring MVC推荐书籍。Spring框架Spring书籍的书建议:选择哪一个

Fremarker有一个非常好的文档-FreeMarker 手册

为了开始使用Java进行Web开发 -

替代文字

http://www.amazon.com/SCWCD-Exam-Study-Kit-Certification/dp/1930110596


5

我认为大多数传统的Java Web开发选项都相当繁重,并且有一些不错的选择:

  • Play是一个MVC框架,致力于轻量级,简单明了并支持快速开发-同时坚持使用纯Java,而不是基于动态JVM的语言。它相当新,但已经令人印象深刻,并且很快就建立了一个良好的社区。

  • Grails是一个受Ruby on Rails启发的MVC框架,该框架使用基于Java的脚本语言Groovy编写并使用。Grails是成熟,强大且广受尊重的社区成员。Groovy基本上是Java的超集,具有更好的语法和一些很棒的功能(例如闭包),因此学习它是学习Java的好方法。

  • 如果您需要/想要构建RESTful网站/服务/应用程序,Restlet是一个很棒的框架-我非常喜欢。它简单,直接但又灵活。社区也很棒。

  • Google的App Engine也是一个有趣的选择。它是托管的,可能不感兴趣,但它具有相当简单的API和良好的SDK。

我敢肯定还有其他人,但是我能想到的就是这些。

祝好运并玩得开心点!


哦,前几天我才发现Prudence:threecrickets.com/prudence
Avi Flax 2009年

3

我是一个PHP / C编程人员,我发现groovy使我无需学习Java编程中固有的所有类和范例就可以跳入Java。Groovy使我能够迅速提高工作效率,同时花时间学习有关Java和所有可用工具/框架/库的更多信息。


3

如果您不愿意使用html,css,xml,javascript等。

尝试使用Vaadin框架,该框架有据可查,易于学习,并且可以通过简单的方式制作美观的UI。(只需编写Java代码,当然您需要一些servlet服务器,Tomcat或Jetty就可以了)


2

更好地学习Java,然后学习Servlet和JSP,然后使用MVC进入Struts或Spring或任何其他启用Java / java的框架。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.