我想至少在基本级别上学习如何构建Java Web应用程序(来自.NET背景)。我希望能够从头开始构建,部署一个简单的CMS类型的应用程序。
我到底需要学习什么?
Tomcat似乎是Java的良好Web服务器。
网络有哪些选项?我知道在ORM中有Hibernate。
Java是否有MVC?那JSP呢?MVC和JSP可以在一起吗?NetBeans?
也许一本书涵盖了所有这些?
(于2020年3月更新)
首先,从2019年9月起,“ Java EE”已重命名为“ Jakarta EE ”,从版本8开始。从历史上看,还有“ 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而从JavaEE教程中删除了JSP,此后,JSP基本上没有改变。因此,您可以安全地使用相当古老的Java EE 5教程。关于JSP的最重要的事实是,自2003年以来,正式禁止使用<%scriptlet 在JSP文件中编写纯Java代码%>。另请参见如何避免在JSP文件中使用[Java代码? 因此,任何仍覆盖脚本的教程都应跳过,因为它们肯定会使您陷入学习不良做法的螺旋式下降。
<%
%>
它是。但是,它的功能有限。它基本上是一个准系统的servlet容器,仅实现了巨大的Java EE API的JSP / Servlet部分。如果您想使用EJB或JPA,那么您想选择另一个,例如WildFly,TomEE,Payara,Liberty,WebLogic等。否则,您必须使用Spring而不是Java EE。也就是说,如果不修改核心引擎就无法在准系统servlet容器中安装EJB,以防Tomcat基本上是在重塑TomEE。另请参见JavaEE到底是什么?,如何通过Maven正确安装和配置JSF库?以及如何在Tomcat上安装和使用CDI?
我知道在ORM中有Hibernate。
以前,在J2EE时代,当JPA不存在并且EJB2糟糕时,Hibernate是一个独立的框架,经常与Spring结合使用以取代EJB。自从Java EE 5(2006)中引入JPA以来,Hibernate已成为JPA实现。您可以在Jakarta EE教程第八部分中学习JPA。此外,基于从Spring中学到的经验教训,EJB3得到了很大的改进。
Java是否有MVC? 那JSP呢?MVC和JSP可以在一起吗?JavaBeans?
您可以,但是在将模型与视图(转换,验证,更改侦听器等)联系起来时,这是对轮子的大量改造。JavaEE的MVC框架称为JSF。在JavaEE6之前,它曾经在JSP上运行,这是相当传统的视图技术。JSP已被Facelets取代。您可以在JakartaEE教程第三部分第7-17章中学习JSF。您也可以在Tomcat上使用JSF,只需要单独安装即可。安装说明可以在Mojarra主页上找到。WildFly,TomEE,Payara,Liberty,WebLogic等作为完整的Java EE实现,已经提供了JSF(以及CDI,BV,JSONP,JAX-RS,EJB,JPA等),因此您不需要单独安装。
有几本书。我建议先从一本书侧重于雅加达EE一般来说,一本书更侧重于JSF,和一本书更侧重于JPA。确保选择涵盖该主题的最新书籍。首先调查最新的可用版本,然后确保所选择的书涵盖了该版本。因此,尽管目前已经有Jakarta EE 8和JSF 2.3可用,但是绝对不要选择Java EE 5或JSF 1.0左右的旧书。
最后但并非最不重要的一点,请忽略业余爱好者维护的代码片段抓取网站,这些网站主要关注广告收入而不是教学,例如roseindia,tutorialspoint,javabeat,journaldev,javatpoint,codejava等。通过扰乱广告链接/可以轻松识别它们。标语和包含_scriptlet的_ JSP代码段。