O tutorial JSON de servlet Java mostra como retornar dados JSON de um servlet Java. Usamos a biblioteca Gson para trabalhar com o formato de dados JSON. O aplicativo da web é implementado no servidor Tomcat.
O Apache Tomcat é um contêiner de Servlet Java de software livre desenvolvido pela Apache Software Foundation (ASF). É o servidor web Java mais popular. O Gson é uma biblioteca Java de software livre para serializar e desserializar objetos Java para (e de) JSON.
Servlet é uma classe Java que responde a um tipo específico de solicitação de rede – mais comumente uma solicitação HTTP. Os servlets Java são usados para criar aplicativos da web. Eles são executados em contêineres de servlet, como o Tomcat ou o Jetty. O desenvolvimento web do Java moderno usa frameworks construídos sobre os servlets.
JSON (JavaScript Object Notation) é um formato leve de troca de dados. É fácil para os humanos ler e escrever e para as máquinas analisar e gerar. O tipo de mídia oficial da Internet para JSON é application/json. A extensão do nome do arquivo JSON é .json.
O seguinte aplicativo da web usa um servlet Java para enviar dados (lista de cidades) para o cliente no formato JSON.
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>br.com.morettic.senac.servlets</groupId> <artifactId>ServletJson</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>ServletJson</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.2</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> </project>
package br.com.morettic.senac.beans; import java.util.Objects; public class Cidade{ private Long id; private String name; private int population; public City(Long id, String name, int population) { this.id = id; this.name = name; this.population = population; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPopulation() { return population; } public void setPopulation(int population) { this.population = population; } @Override public int hashCode() { int hash = 3; hash = 97 * hash + Objects.hashCode(this.id); hash = 97 * hash + Objects.hashCode(this.name); hash = 97 * hash + this.population; return hash; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final City other = (City) obj; if (this.population != other.population) { return false; } if (!Objects.equals(this.name, other.name)) { return false; } return Objects.equals(this.id, other.id); } }
import br.com.morettic.senac.beans.Cidade; import java.util.List; public interface ICityService { public List<Cidade> getCities(); }
import ...... import java.util.List; public class CityService implements ICityService { //@todo //ICityDao cityDao; public CityService() { cityDao = new CityDao(); } @Override public List<City> getCities() { return cityDao.findAll(); } }