In this example, we will learn how to use the @PathParam annotation to get the Parameter passed in the URI in JAX-RS RESTful [email protected] parses the values of the parameter which is passed through @Path annotation.
In general, there are two ways to pass the parameter in a GET request of the REST Service.
The first way is using @PathParam and the Other way is using @QueryParam. As of now, we will look at how to use @PathParam annotation.
We define a parameter with @Path(“/{parameter}”) annotation on to a method and through which we will get the value of the parameter by parsing it with @PathParam(“parameter”). We have already used it in our Jersey HelloWorld example.
Folder Structure
- Create a Dynamic Web Project RestfulExample and create a package for our src files “com.javainterviewpoint“
- Place the required jar files under WEB-INF/Lib
jersey-bundle-1.18.jar
asm-3.1.jar - Create the Java classes HelloWorld.java under com.javainterviewpoint folder.
- Place the web.xml under the WEB-INF directory
@PathParam – Single Parameter
Here will pass a single parameter.
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.Response; @Path("hello") public class HelloWorld { @GET @Path("{username}") public Response welcome(@PathParam("username")String name) { return Response.status(200). entity("Welcome to hello world program "+name).build(); } }
Here using @Path(“{username}”) we have defined a new path parameter with the name “username” , we will use @PathParam(“username”) to parse the parameter and push the value to the String “name”.
Hit on the URI : “http://localhost:8080/RestfulExample/rest/hello/JavaInterviewPoint”
Welcome to hello world program JavaInterviewPoint
@PathParam – Multiple Parameter
Here we will parase multipe parameters (username,id,age)
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.Response; @Path("hello") public class HelloWorld { @GET @Path("{username}/{id}/{age}") public Response getUserDetails( @PathParam("username")String name, @PathParam("id")int id, @PathParam("age")int age) { return Response.status(200). entity("Username : "+name+" ID : "+id+" Age : "+age).build(); } }
Hit on the URI : “http://localhost:8080/RestfulExample/rest/hello/JavaInterviewPoint/999/22”
Username : JavaInterviewPoint ID : 999 Age : 22
web.xml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Restful Web Application</display-name> <servlet> <servlet-name>jersey-serlvet</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.javainterviewpoint</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>
We register our Jersey container “com.sun.jersey.spi.container.servlet.ServletContainer” in the servlet-class of our web.xml and we will mention the source files location as the value of the init param “com.sun.jersey.config.property.packages” so that the container will scan for annotations of the class files within that package.
REST
Leave a Reply