- Dependency
- Deployment Descriptor
- Method GET and Hallo world
- Produces for application/json
- configure xml to model object
- Method POST and Passing Object
- Query
- Consume API
- Receive and Upload File
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.25.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.25.1</version>
</dependency>
<!-- for sending file / upload -->
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.8</version>
</dependency>import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("api")
public class ApplicationApi extends Application{
}<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.webapp.api</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
@Path("/hallo")
public class Hallo {
@GET
@Path("/ping")
public Response index() {
return Response.ok().entity("hallo, arrizaqu").build();
}
}@XmlRootElement
public class User {
private String id;
private String name;
private String address;
private String email;
//----------------- etc@GET
@Path("/user")
@Produces(MediaType.APPLICATION_JSON)
public Response second() {
User user = new User();
user.setEmail("[email protected]");
user.setName("masyda arrizaqu");
user.setAddress("seputih banyak");
return Response.status(201).entity(user).build();
}@POST
@Path("/save")
@Consumes(MediaType.APPLICATION_JSON)
public void saveUser(User user) {
System.out.println("user name : "+ user.getName());
}@POST
@Path("/save")
@Consumes(MediaType.APPLICATION_JSON)
public Response saveUser(User user) {
System.out.println("user name : "+ user.getName());
return Response.status(201).build();
}@POST
@Path("/user-request")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response requestPostUser(User user) {
return Response.status(201).entity(user).build();
}@GET
@Path("/info")
public void getUrlParam(@QueryParam("username") String username, @QueryParam("age") int age) {
System.out.println("username : "+ username);
System.out.println("age : "+ age);
}http://localhost:8080/api/hallo/info?age=12&username=danangusername : danang
age : 12 <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.webapp.api</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>@Path("/pdf")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadOk(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
String uploadedFileLocation = "C:\\Users\\arrizaqu\\Documents\\testing\\fileupload\\" + fileDetail.getFileName();
//uploadToLocalDrive(uploadedInputStream, uploadedFileLocation);
uploadToWebFolder(uploadedInputStream, fileDetail.getFileName());
String output = "File uploaded to : " + uploadedFileLocation;
return Response.status(200).entity(output).build();
}private void uploadToLocalDrive(
InputStream uploadedInputStream,
String uploadedFileLocation) {
try {
OutputStream out = new FileOutputStream(new File(
uploadedFileLocation));
int read = 0;
byte[] bytes = new byte[1024];
out = new FileOutputStream(new File(uploadedFileLocation));
while ((read = uploadedInputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}//upload to web folder
public void uploadToWebFolder(InputStream uploadedInputStream,
String uploadedFileLocation) {
String relativeWebPath = "/assets/";
String absoluteFilePath = servletContext.getRealPath(relativeWebPath +uploadedFileLocation);
java.nio.file.Path path = Paths.get(absoluteFilePath);
try {
OutputStream out = new FileOutputStream(new File(
absoluteFilePath));
int read = 0;
byte[] bytes = new byte[1024];
out = new FileOutputStream(new File(uploadedFileLocation));
while ((read = uploadedInputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}@GET
@Path("/myhtml")
@Consumes("text/html")
public Response generateHTML() {
String html = "<html><body>";
html += "<form action='http://localhost:8080/api/hallo/pdf' method='POST' enctype='multipart/form-data'>"
+ "<input type='file' name='myfile' >"
+ "<input type='submit' name='submit' value='upload'>"
+ "</form>";
html +="</body><html>";
return Response.ok().entity(html).build();
}- http://www.baeldung.com/jax-rs-spec-and-implementations
- https://www.mkyong.com/webservices/jax-rs/jersey-hello-world-example/
- http://www.baeldung.com/jersey-jax-rs-client
- https://bytefish.de/blog/file_upload_api_jersey/
- https://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/
- https://www.geekmj.org/jersey/jax-rs-multiple-files-upload-example-408/