Let's create a Java web application in STS aka SpringSource Tool Suite using Maven. I could do the same in plain Eclipse with Maven plugin installed, but this saves me lots of time.
Let's create a new project. New -> Other -> Maven Project. We will use archetype. Search for jee5. If you cannot find this archetype, goto Window -> Show view -> Other -> Maven repositories and rebuild index of central repository. This will take a while, so meanwhile grab a coffee.
Once the index has been rebuilt, choose artifact with Artifact ID webapp-jee5, set Group ID: com.javavids.webapp, Artifact ID: HelloWorldWeb, package the same as Group ID and press Finish.
If you do it the first time, it may take several seconds to create a project as you see it here. Maven will meanwhile download archetype and create this project structure.
It's a classic Maven project, inside src/main/java are Java classes, inside src/main/webapp are public files and WEB-INF directory with web.xml. Inside project is pom.xml file, where are dependencies.
As you can see, we already have index.jsp file with hello world message. Let's create a Servlet. Let's call it HelloServlet and map it to "/hello.html". Because I created a Java EE 5 project, there's no @WebServlet annotation, but servlet mapping is defined in web.xml.
Delete constructor and doPost() method and into doGet() method add this code:
PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>"); out.println("Hello from first servlet!"); out.println("</body>"); out.println("</html>");
To deploy this project to server, just simply drag and drop this project to appropriate server.
Test index.jsp page and hello.html page.
To create a WAR file, right click on this project, Run As -> Maven build -> and add goal "package". This will create a standard WAR file inside target directory. If you do it the first time, Maven will download some files, so it will take a little bit longer than here.
Using Maven you can even startup your project without local server. Stop your local server and run this Maven project with goal tomcat:run. This will download Tomcat and next it will deploy this application on this embedded server. I use this for demoing purposes, but for development I use Tomcat integrated with Eclipse as I demonstrated earlier.