JAX-RS @QueryParam with @DefaultValue – Jersey

In this tutorial we are going to see how set  default value to query parameters (@QueryParam) in RESTful web service using @DefaultValue

Create maven web application project and add Jersey dependency in pom.xml. Find Jersey 2.x maven dependency configuration below. If you are new to maven refer our maven tutorials.

Jersey 2.x dependency in pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ehowtonow</groupId>
  <artifactId>RestTutorials</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>RestTutorials Maven Webapp</name>
  <url>http://maven.apache.org</url>
   <properties>
        <jersey2.version>2.19</jersey2.version>
        <jaxrs.version>2.0.1</jaxrs.version>
    </properties>
  <dependencies>
      <!-- JAX-RS -->
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>${jaxrs.version}</version>
        </dependency>
        <!-- Jersey 2.19 -->
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>${jersey2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
            <version>${jersey2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-client</artifactId>
            <version>${jersey2.version}</version>
        </dependency>
  </dependencies>
  <build>
    <finalName>RestTutorials</finalName>
  </build>
</project>

QueryParamService .java

package com.ehowtonow.webservice;

import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;

@Path("/tutorials")
public class QueryParamService {

 @GET
 @Path("/java-tutorial")
 public Response getTutorial(
   @DefaultValue("www.ehowtonow.com") @QueryParam("site") String site,
   @DefaultValue("Web Service Tutorial") @QueryParam("tutorial") String tutorial,
   @DefaultValue("1") @QueryParam("rank") int rank) {
  return Response
    .status(200)
    .entity("Web Site : " + site + "  Tutorial : " + tutorial
      + " Rank : " + rank).build();
 }
}

In above class @QueryParam used to get the value of URL query parameter into Java Class. If there is no query param in URL then default value set to the corresponding fields using @DefaultValue annotation

Configure Jersey 2.x Servlet dispatcher

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
	<display-name>Restful Webservice Example</display-name>
	<servlet>
		<servlet-name>jersey-serlvet</servlet-name>
		<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
             <param-name>jersey.config.server.provider.packages</param-name>
			<param-value>com.ehowtonow.webservice</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>jersey-serlvet</servlet-name>
		<url-pattern>/rest/*</url-pattern>
	</servlet-mapping>
</web-app>

Now you can run the service and access the service by calling the following URL

http://localhost:8080/RestTutorials/rest/tutorials/java-tutorial

or

http://localhost:8080/RestTutorials/rest/tutorials/java-tutorial?site=www.ehowtonow.com&tutorial=RESTful%20WebService&rank=1

In first url we didn’t pass any query param value. JAX-RS will set the default value from @Default annotation to query parameters.


Ask your questions in eHowToNow Forum

Post your technical, non-technical doubts, questions in our site. Get answer as soon as possible, meanwhile you can help others by answering, unanswered questions.
To Ask new Question : Ask Question
Check our existing discussions : Questions & Answers

  1. JAX-RS @PathParm Web service Example
  2. JAX-RS Web Service to produce XML using JAXB
  3. JAX-RS @PATH for URI – Jersey
  4. Restful Webservice HelloWorld Jersey 2.x Example
  5. File Upload using JAX-RS RESTful Webservice (Jersey 2.x)
  6. JAX-RS @GET RESTful webservice
  7. JAX-RS Send List using QueryParam Annotation
  8. Download Excel file using JAX-RS RESTful Webservice
  9. JAX-RS @POST using RESTful web service – Jersey 1.x
  10. Download PDF file using JAX-RS RESTful Webservice
  11. JAX-RS get QueryParam using @Context UriInfo
  12. JAX-RS QueryParam – Jersey
  13. RESTful Web service to consume JSON and Produce XML – Jersey 1.x
  14. JAX-RS Web service to Consume JSON using Jersey 1.x
  15. JAX-RS @FormParam Web service example

Be the first to comment

Leave a Reply