Answers:
(于2020年3月更新)
首先,自2019年9月起,“ Java EE”已从版本8开始重命名为“ Jakarta EE ”。从历史上看,术语“ J2EE”也涵盖了1.2至1.4版本。“ Java EE”涵盖版本5到8。另请参见Java Platform,Enterprise Edition,Wikipedia上的History。
我到底需要学习什么?
我假设您已经熟悉诸如HTML,CSS和JS之类的客户端技术,因此在此不再赘述。我还假设您已经熟悉基本的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上,您还可以找到有关JSP,Servlets,JSTL和EL的漂亮Wiki页面,您可以在其中学习基本知识并找到更多有用的链接。
Tomcat似乎是Java的良好Web服务器。
它是。但是,它的功能有限。它基本上是一个准系统的servlet容器,仅实现巨大的Java EE API的JSP / Servlet部分。如果您想使用EJB或JPA,则需要选择另一个,例如WildFly,TomEE,Payara,Liberty,WebLogic等。否则,您必须使用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代码片段。
我到底需要学习什么?
最少
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(即它们将渲染表单以编辑其字段)。
您需要HTML,CSS和JavaScript-所有常见的Web开发嫌疑人。
Tomcat确实内置了Web服务器,但是它是servlet / JSP引擎。Apache是纯Web服务器。
您需要学习JSP,这是用于生成servlet的模板语言,该servlet生成HTML输出。您将要使用JSTL而不是scriptlet来编写它们。
如果要进行CRUD应用程序,则需要学习JDBC和关系数据库。您应该在尝试Hibernate或任何其他ORM之前执行此操作,因为这是构建它们的基础。
JavaBeans只是Java对象的标准。
如果您愿意,我建议使用Spring框架。
Java是否有MVC?
Java具有不同的框架,例如Struts2,Spring MVC
JSP呢?
JSP是模板库。您可以尝试使用FreeMarker和Velocity等几种替代方法。AFAIK Freemarker是新兴的优秀模板库。它比JSP轻巧。检查此FreeMarker:JSP的开放替代品-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
我认为大多数传统的Java Web开发选项都相当繁重,并且有一些不错的选择:
Play是一个MVC框架,致力于轻量级,简单明了并支持快速开发-同时坚持使用纯Java,而不是基于动态JVM的语言。它相当新,但已经令人印象深刻,并且很快就建立了一个良好的社区。
Grails是一个受Ruby on Rails启发的MVC框架,该框架使用基于Java的脚本语言Groovy编写并使用。Grails是成熟,强大且广受尊重的社区成员。Groovy基本上是Java的超集,具有更好的语法和一些很棒的功能(例如闭包),因此学习它是学习Java的好方法。
如果您需要/想要构建RESTful网站/服务/应用程序,Restlet是一个很棒的框架-我非常喜欢。它简单,直接但又灵活。社区也很棒。
Google的App Engine也是一个有趣的选择。它是托管的,可能不感兴趣,但它具有相当简单的API和良好的SDK。
我敢肯定还有其他人,但是我能想到的就是这些。
祝好运并玩得开心点!
由于您是Java的新手,因此强烈建议您先学习基本语言。无论您选择使用哪种技术来构建Web应用程序,这都将为您提供帮助。
一个不错的在线资源是Sun Java教程-http: //java.sun.com/docs/books/tutorial/