Engineering Full Stack Apps with Java and JavaScript
We will create a simple servlet that prints "Hello World" in eclipse, deploy it and run it on the integrated tomcat.
Configure apache tomcat with eclipse as mentioned in configuring-apache-tomcat-with-eclipse and start and stop tomcat server from the servers view of eclipse.
1. Create a 'Dynamic Web Project'.
Select 'File > New > Dynamic Web Project' or 'File > New > Project > Web > Dynamic Web Project'.
Give a name for the project, say 'MyDynaServletProject' in the wizrard, leave everything else as defaults and click Finish.
2. Create a servlet inside the src folder.
Right click on the src folder and select 'New > Servlet' or 'New > Other > Web > Servlet'.
Enter the below details:
Java package: com.javajee.servletdemo
Class name: HelloWorldServlet
Note that Superclass will be already filled with the value 'javax.servlet.http.HttpServlet'. We will see about servlet class hierarchies soon.
Click finish.
Your servlet class will have a basic structure as:
package com.javajee.servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/HelloWorldServlet")
public class HelloWorldServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public HelloWorldServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
Note that you have used the annotation @WebServlet("/HelloWorldServlet") to tell that this is a servlet and also have specified the url pattern inside. You can replace this annotation by configuring the servlet and servlet mapping in a web.xml file as:
<servlet>
<description></description>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.javajee.servlets.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/HelloWorldServlet</url-pattern>
</servlet-mapping>
3. Now just add the below code to the doGet method:
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title> Hello World Servlet </title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World! </p>");
out.println("</body>");
out.println("</html>");
4. Now right click HelloWorldServlet.java and execute it on server:
select Run As > Run on Server
> Select Tomcat (Make sure status is started) and click Next
> Make sure your project is there on the right side under 'Configured'. If project is not under 'Configured, but under 'Available', then select the project under 'Available', click 'Add' and move it to 'Configured' and click Next. If your project is not under both 'Configured' and 'Available', then something has gone wrong. Check if you have followed all the steps correctly.
> Finally click finish and your servlet will be loaded in the eclipse browser. You will be prompted to restart server and select restart server option only.
5. You can execute the servlet by running the url from the eclipse browser or another browser by copy pasting the servlet url if the tomcat server is still running. In my case, it is: http://localhost:8081/DynaServletProject/HelloWorldServlet.
And you will see the output as:
If you write the servlet mapping serlvet name incorrectly, server will fail to restart and throw an error as:
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ServletTraining]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
... 6 more
Caused by: java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name MyServlet1
So we should be very careful when using web.xml to avoid such typos. It would be a better choice to use annotations as it will be verified by the compiler.
Comments
All these steps are very
All these steps are very effective learn to learn how to create a simple web application in eclipse. I prefer to every fresh student of web developer to read these functions and understand these basic things from this page.