We already know how to get the values using @QueryParam, @Context and get path parameter using @PathParam annotation, now lets learn how to get the value of a Matrix parameter passed using @MatrixParam Annotation. Matrix Parameter will be in the form of Key Value pairs separated by semicolon (;)
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 MatrixParamExample.java under com.javainterviewpoint folder.
- Place the web.xml under the WEB-INF directory
@MatrixParam Example
package com.javainterviewpoint; import javax.ws.rs.GET; import javax.ws.rs.MatrixParam; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/MatrixExample") public class MatrixParamExample { @GET @Produces(MediaType.TEXT_PLAIN) public String getMatrixParameter( @MatrixParam("author") String author, @MatrixParam("year") int year, @MatrixParam("book") String book) { return "Author : "+author+" Book : "+book+" Year : "+year; } }
Hit on the URI :
http://localhost:8080/RestfulExample/rest/MatrixExample;author=JavaInterviewPoint;book=SherlockHolmes;year=2015
Output
Author : JavaInterviewPoint Book : SherlockHolmes Year : 2015
We have passed three attributes such as author, year and book as Matrix Param to the method getMatrixParameter().
Suppose we have not passed in any/one of the value then default value will be assigned to it.
http://localhost:8080/RestfulExample/rest/MatrixExample;author=JavaInterviewPoint
Then output will be like below
Author : JavaInterviewPoint Book : null Year : 0
web.xml
<?xml version="1.0" encoding="UTF-8"?> <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" 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 to the init param “com.sun.jersey.config.property.packages” so that the container will scan for annotations of the class files within that package.
Leave a Reply