Home » Enterprise Java » servlet » Java Servlet Annotations Example

About Yatin

Yatin
The author is graduated in Electronics & Telecommunication. During his studies, he has been involved with a significant number of projects ranging from programming and software engineering to telecommunications analysis. He works as a technical lead in the information technology sector where he is primarily involved with projects based on Java/J2EE technologies platform and novel UI technologies.

Java Servlet Annotations Example

Communication between the Servlets is an important task to the programmer. In this tutorial, we will see how the Servlet annotations can replace the equivalent XML configuration in the web deployment descriptor file (web.xml).

1. Introduction

The Servlet API 3.0 introduces a new package called javax.servlet.annotation which provides the annotation types which can be used for annotating a Servlet class. The annotations can replace the equivalent XML configuration in the web deployment descriptor file (i.e. web.xml) such as Servlet Declaration and Servlet Mapping. Servlet Containers will process the annotated classes at the time of application deployment.

 
The different types of annotations introduced in Servlet 3.0 are:

  • @HandlesTypes
  • @HttpConstraint
  • @HttpMethodConstraint
  • @MultipartConfig
  • @ServletSecurity
  • @WebFilter
  • @WebInitParam
  • @WebListener
  • @WebServlet

The @WebServlet annotation is used for declaring a Servlet class (i.e. the Servlet class must extend from the HttpServlet class) and configuring the mapping for it. Here are some examples of using the @WebServlet annotation:

  • The simplest way to declare a Servlet

Here the MyServlet servlet is mapped to the /processForm URL pattern. When accessing this servlet, it will return a Hello message.

@WebServlet("/processForm")
public class MyServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.getWriter().println("Hello");
    }
}
  • Declare a Servlet with additional information

Here the MyServlet servlet is declared with additional information such as name and description.

@WebServlet(
    name = "MyServlet",
    description = " This is my first annotated servlet",
    urlPatterns = {"/processServlet"}
)
public class MyServlet extends HttpServlet {
    // Servlet Code Here 
}
  • Declare a Servlet with multiple URL patterns

Here the MyServlet servlet is mapped to three different URL patterns i.e. /foo, /bar, and /cool.

@WebServlet(urlPatterns = {"/foo", "/bar", "/cool"})
public class MyServlet extends HttpServlet {
    // Servlet Code Here
}
  • Declare a Servlet with some init parameters

Here we declare the ImageUploadServlet mapped by the URL pattern: /imageUpload and specify the two init parameters i.e. saveDir and allowedTypes. The Servlet’s doGet() method retrieves the values of these parameters and prints them out to the client.

@WebServlet(
        urlPatterns = "/imageUpload",
        initParams = {
            @WebInitParam(name = "saveDir", value = "D:/FileUpload"),
            @WebInitParam(name = "allowedTypes", value = "jpg, jpeg, gif, png")
        }
)
public class ImageUploadServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String saveDir = getInitParameter("saveDir"), 
             fileTypes = getInitParameter("allowedTypes");
 
        PrintWriter writerObj = response.getWriter();
        writerObj.println("saveDir?= " + saveDir);
        writerObj.println("fileTypes?= " + fileTypes);
    }
}
  • Declare a Servlet with asynchronous operation mode and load-on-startup order

Here we declare the servlet StartupServlet with loadOnStartup = 1. This means that this servlet is initialized automatically by the Servlet container when the server is being started (and the message in the init() method will be printed). Here we will also specify whether the Servlet supports the Asynchronous Mode or not.

@WebServlet(
        urlPatterns = "/myController",
        loadOnStartup = 1,
        asyncSupported = true
)
public class StartupServlet extends HttpServlet {   
    public void init(ServletConfig config) {
        loggerObj.debug("My Servlet Has Been Initialized ….!");
    }
     
    // Servlet Code Here
}

2. Example of simple Servlet by Annotation

There is given the simple example of a Servlet class with annotations.

Simple.java

package com.jcg.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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("/Simple")  
public class Simple extends HttpServlet {  

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");

		PrintWriter out = response.getWriter();
		out.print("<html><body>");
		out.print("<h3>Hello Servlet</h3>");
		out.print("</body></html>");
	}
}

Now run the project on Tomcat7 and if everything goes right developers will get the following screen.

Fig.1: Servlet Annotations Application Output

Fig.1: Servlet Annotations Application Output

That’s all for this post. Happy Learning!!

3. Conclusion

In this section, developers learned how the Servlet annotations can replace the equivalent XML configuration in the web deployment descriptor file. Developers can download the sample application as an Eclipse project in the Downloads section. I hope this article served you with whatever developers were looking for.

4. Download the Eclipse Project

This was an example of Servlet Annotations.

Download
You can download the full source code of this example here: Servlet Annotation
(No Ratings Yet)
Start the discussion Views Tweet it!

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!

 

1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design

 

and many more ....

 

Receive Java & Developer job alerts in your Area

 

Leave a Reply

avatar
  Subscribe  
Notify of