Java web development, what skills do I need?

What exactly do I need to learn?

which server to be a good web for Java.

I assume that you’re already familiar with client side technologies like HTML/CSS/JS, so I won’t go in detail with that. As books I can recommend the “X for Dummies” series like “HTML for Dummies”. Have a look at I also assume that you’re already familiar with basic Java. Follow Oracle’s The Java Tutorials and if possible, go get a SCJP book or course as well.

Tomcat seems to be a good web server for Java.

It is. It is however limited in capabilities (it’s a simple servlet container, implementing only the JSP/Servlet parts of the Java EE API), if you ever want to go EJB or JPA, then you’d like to pick another, e.g. JBoss AS/EAP, or GlassFish, or TomEE. JBoss and TomEE uses Tomcat’s core engine under the hoods and adds more Java EE capabilities to it. GlassFish is Oracle’s own complete Java EE implementation.

You need HTML, CSS, and JavaScript - all the usual suspects for web development.

Tomcat does have a web server built in, but it’s a servlet/JSP engine. Apache is the pure web server.

You need to learn JSP, which is a templating language for generating servlets that generate HTML output. You’ll want to write them using JSTL, not scriptlets.

If you’re doing CRUD applications, you’ll need to learn JDBC and relational databases. You should do that before trying Hibernate or any other ORM, because it’s the foundation on which they’re built.

JavaBeans are just standards for Java objects.

If you’re up for it, I’d recommend the Spring framework.