Tutorial de Servlets com Json, Java e Tomcat

porLuis Augusto Moretto

Tutorial de Servlets com Json, Java e Tomcat

Tutorial JSON de servlet Java

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 Java

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

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.

Aplicativo JSON do servlet Java

O seguinte aplicativo da web usa um servlet Java para enviar dados (lista de cidades) para o cliente no formato JSON.

pom.xml
<?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> 

Classe cidade Java Bean

Cidade.java

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);
    }
}

Interface do serviço web

import br.com.morettic.senac.beans.Cidade;
import java.util.List;

public interface ICityService {
    
    public List<Cidade> getCities();
}

Implementação do serviço

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();
    }
}