(Updated Sep 2023)
First of all, "Java EE" has since Sep 2019 been renamed to "Jakarta EE", starting with version 8. Historically, there was also the term "J2EE" which covered versions 1.2 until 1.4. The "Java EE" covered versions 5 until 8. See also Jakarta EE, History on Wikipedia.
What exactly do I need to learn?
I assume that you're already familiar with client side technologies like HTML, CSS and JS, so I won't go in detail with that. I also assume that you're already familiar with basic Java. Follow Oracle's The Java Tutorials and if possible, go get a OCP book or course as well.
Then you can start with Jakarta Pages (JSP) and Jakarta Servlet to learn the basic concepts of Java web development. Good tutorial can be found in Jakarta EE tutorial -> Web Profile -> Jakarta Servlets. Note that since Java EE 6, JSP was removed from the tutorial in favor of Facelets, part of Jakarta Faces (JSF) and that Jakarta Pages has basically not changed since then. That's why you could safely use the fairly old Java EE 5 tutorial for this. Most important thing with regard to JSP is the fact that writing plain Java code in JSP files using <%
scriptlets %>
is officially discouraged since 2003. See also How can I avoid Java code in JSP files, using JSP 2? So any tutorials which still cover scriptlets should be skipped as they will definitely take you into a downward spiral of learning bad practices.
Here on Stack Overflow, you can also find nice wiki pages about JSP, Servlets, JSTL and EL where you can learn the fundamentals and find more useful links. Especially Servlets and EL are still essential in order to be able to better understand the inner workings of many Java based web frameworks.
Tomcat seems to be a good web server for Java.
It is. It is however limited in capabilities. It's basically a barebones servlet container, implementing only the Pages/Servlet parts of the huge Jakarta EE API. If you ever want to go EJB or JPA, then you'd like to pick another, e.g. WildFly, TomEE, Payara, Liberty, WebLogic, etc. Otherwise you have to use Spring instead of Jakarta EE. It's namely not possible to install EJB in a barebones servlet container without modifying the core engine, you'd in case of Tomcat basically be reinventing TomEE. See also What exactly is Java EE?, How to properly configure Jakarta EE libraries in Maven pom.xml for Tomcat?, How to properly install and configure JSF libraries via Maven? and How to install and use CDI on Tomcat?
I know there is Hibernate for an ORM.
Previously, during the J2EE era, when Jakarta Persistence (JPA) didn't exist and EJB2 was terrible, Hibernate was a standalone framework and often used in combination with Spring to supplant EJB. Since the introduction of JPA in Java EE 5 (2006), Hibernate has become a JPA implementation. You can learn JPA at Jakarta EE tutorial -> Web Profile -> Jakarta Persistence. Also, Jakarta Enterprise Beans (EJB3) was much improved based on lessons learnt from Spring. See also When is it necessary or convenient to use Spring or EJB3 or all of them together?
Does Java have MVC? What about JSP? Can MVC and JSP be together? JavaBeans?
You can, but that's a lot of reinvention of the wheel when it comes to tying the model with the view (conversion, validation, change listeners, etc). Jakarta EE's MVC framework is called Jakarta Faces (JSF). Prior to Java EE 6 it used to run on Jakarta Pages (JSP), which is a fairly legacy view technology. JSP is been replaced by Facelets. You can learn JSF at Jakarta EE tutorial -> Web Profile -> Jakarta Faces. You can by the way also use JSF on Tomcat, you only have to install it separately. Installation instructions can be found at Mojarra homepage. WildFly, TomEE, Payara, Liberty, WebLogic, etc as being a complete Jakarta EE implementation already provide JSF (and JSTL, CDI, BV, JSONP, JAX-RS, JPA, JMS, etc) out the box, so you don't need to install it separately. See also How to properly install and configure JSF libraries via Maven?
Maybe a book that covers all of these?
There are several books. I would recommend to start with a book focused on Jakarta EE in general, a book more focused on Jakarta Faces, and a book more focused on Jakarta Persistence. Ensure that you choose the most recent book covering the subject. First investigate the most recent available version and then ensure that the chosen book covers that. Thus do definitely not pick an old book for Java EE 5 or JSF 1.0 or so while there's currently already Jakarta EE 10 and Faces 4.0 available.
Last but not least, please ignore code snippet scraping sites maintained by amateurs with primary focus on advertisement income instead of on teaching, such as roseindia, tutorialspoint, javabeat, journaldev, javatpoint, codejava, etc. They are easily recognizable by disturbing advertising links/banners and JSP code snippets containing scriptlets of extremely low quality.
See also: