JAVA EE E MONGODB

A penúltima parte prática da  minha monografia de especialização em Desenvolvimento Java. Neste capitulo irá aprender a usar MongoDB juntamente com Java EE.

Boa Leitura.

Segundo Marchioni (2015) desenvolver uma aplicação para indústria de TI pode ser um grande desafio para qualquer desenvolvedor, pois a mesma precisa resolver algumas preocupações como segurança, portabilidade e alta disponibilidade. Sem contar que muito dessas aplicações precisa se comunicar com outros sistemas e ser gerado de um ponto central. Com a plataforma Java EE, podemos alavancar todas essas características e muito mais, com foco na preocupação mais importante, que é os seus requisitos de negócios.

Marchioni (2015) explica que o desenvolvimento da plataforma Java EE é feito através do Java Community Process (JCP), ela é uma comunidade encarregada de desenvolver as especificações para toda tecnologia Java. Esta comunidade é composta por especialista da indústria de TI que estabelecem a Java Specification Requests (JSRs), para as tecnologias Java EE. O Java EE é agora mais fácil e mais poderoso a cada novo lançamento. Seu conjunto de APIs disponíveis cresceu rapidamente e se tornando uma grande imagem da tecnologia,
como é mostrada na figura 51:

jee
Figura 51 – API Java EE Fonte: MARCHIONI,2015, p.88

Conforme mostrada na figura 51, o Java EE possuir muitas APIs para se está trabalhando. Utilizaremos alguns componentes do Java EE em nossos exemplos tais como Servlet para estar lidando com as requisições HTTP e a JSP para está interagindo com a Servlet, bem como usar como interface visual para o usuário.

Antes de iniciar o projeto, devemos obter um conteier para que o Java funcione na web. Nos exemplos será utilizado o Apache Tomcat que pode ser obtida em https://tomcat.apache.org/download-80.cgi, basta descompactar em qualquer local do computador e configurar o mesmo eclipse.

CRIANDO UM PROJETO JAVA WEB COM MONGO

Criaremos um projeto semelhante ao anterior utilizando também o maven, porem utilizando recursos do Java EE para construirmos uma aplicação baseada em web. Siga os passos nas figuras 52 a 54 para esta criando o projeto:

maven
Figura 52 – Novo Projeto Fonte: Gerado pelo Eclipse
maven2
Figura 53 – Seleção maven-archetype-webapp Fonte: Gerado pelo Eclipse
maven3
Figura 54 – Configurando o Projeto Fonte: Gerado pelo Eclipse

Após seguir como demonstrada nas figuras 52 a 54, será gerada um projeto no eclipse chamada JavaMongoWeb. Abra o arquivo pom.xml é configure de acordo com a figura 55:

   <dependencies>
           <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
          </dependecy>

          <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
           </dependecy>

           <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongodb-driver</artifactId>
                <version>3.2.2</version>
           </dependecy>
    </dependencies>

 <build>
      <finalName>JavaMongoWeb</finalName>
         <plugins>
              <plugin>
                   <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.1</version>
                       <configuration>
                            <source>1.8</source>
                            <target>1.8</target>
                       </configutation>
                 </plugin>
          </plugins>
     </build>

Figura 55 – Adicionando Dependências – Fonte : Gerado pelo Eclipse

CRIANDO CLASSE MODELO

Nesta sessão será criada uma classe chamada Pessoa e será usado para mapear documentos MongoDB. Elas contêm os mesmos campos correspondentes do documento, conforme a figura 56:

public class Pessoa {

     private String nome;
     private int idade;
     private String email;
     private String telefone;

     public Pessoa(String nome, int idade, String email, String telefone) {
          this.nome = nome;
          this.idade = idade;
          this.email = email;
          this.telefone = telefone;
       }

     public Pessoa() {
       this.("",0,"","");
   }

    // Getter e Setter foram emitido para abreviar.

Figura 56 – Classe Pessoa Fonte: Autoria Própria.

INSERINDO DADOS COM SEVLET E JSP

A figura 56 demonstra uma classe modelo para especificar um documento, esta classe contém quatro atributos declarados como private, juntamente com seus getters e setters que utilizaremos para recuperar e passar os valores, um construtor sem argumentos e um construtor com argumentos. Criaremos as próximas classes que serão quatro servlets para esta fazendo as operações no MongoDB.


@WebServlet("/InserirControler")
public class InserirControle extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // criando uma instancia de Pessoa
		Pessoa pessoa = new Pessoa();

		//Recuperando dados do JSP
		pessoa.setNome(request.getParameter("nome"));
		pessoa.setIdade(Integer.parseInt(request.getParameter("idade")));
		pessoa.setTelefone(request.getParameter("telefone"));
		pessoa.setEmail(request.getParameter("email"));

       // Criando a conexao com o mongo
		MongoClient conexao = new MongoClient();

		// Acessando a DataBase TCC
		MongoDatabase database = conexao.getDatabase("TCC");

		// Recuperando a coleção
		MongoCollection<Document> collection = database.getCollection("usuarios");

		// inserindo os dados
		collection.insertOne(
				new Document("Nome",pessoa.getNome())
				.append("Idade", pessoa.getIdade())
				.append("Info",
						new Document("Email",pessoa.getEmail())
						.append("Telefone", pessoa.getTelefone())
						)
				);
	}

}

Figura 57 – Servlet Incluir Fonte: Autoria Própria.

Como podemos observar a inclusão dos dados, assim como as outras operações serão praticamente a mesma demonstrada na sessão anterior utilizando java puro. A figura 58 exibe um arquivo chamado incluir.jsp, e nele que inserimos os dados e o nosso servlet irá recuperar os valores passados para inclui-los no mongoDB:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"     pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Inserir Pessoa</title>
</head>
<body>
<form action="InserirControler" method="post">
		   Nome: <input type="text" name="nome"/>
		   Idade: <input type="number" name="idade"/>
		   Telefone: <input type="text" name="telefone"/>
		   Email: <input type="text" name="email"/>

	   <input type="submit" value="Cadastrar Dados no MongoDB"/>
	</form>

</body>
</html>

Figura 58 – incluir.jsp Fonte: Autoria Própria.

CONSULTANDO DADOS COM SEVLET E JSP

A figura 59 demonstra o servlet para retorna os dados do banco e apresentar os mesmos na jsp. A figura 60 demonstra como fica a página que irá exibir os dados vindos da servlet.

@WebServlet("/ConsultarTodosControler")
public class ConsultarTodosControler extends HttpServlet {
     private static final long serialVersionUID = 1L;

     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       RequestDispacher visao = null;

      // Criando a conexão
      MongoClient conexao = new MongoClient();

     // Acessando a DataBase TCC
     MongoDatabase dataBase = conexao.getDatabase("TCC");

     // Acessando a coleção
     MongoCollection<Document> collection = dataBase.getCollection("usuarios");

    // Configurando um atributo para JSP listar os dados
    request.setAttribute("listas",collection.find().iterator());

   // Retorna para a pagina listar.jsp
   visao = request.getRequestDispacher("listar.jsp");
   visao.forward(request,response);
  }
}

Figura 59 – Servlet Consultar Fonte: Autoria Própria.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 	pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Lista dos Dados</title>
</head>
<body>
<form action="ConsultarTodosControler" method="post">
<table align="center" border="4">
<tr bgcolor="gray">
<th>Nome</th>
<th>Idade</th>
<th>Telefone</th>
<th>Email</th>
</tr>
<c:forEach items="${listas}" var="usuario">
<tr>
<td>${usuario.nome}</td>
<td>${usuario.idade}</td>
<td>${usuario.telefone}</td>
<td>${usuario.email}</td>
</tr>
</c:forEach></table>
<input type="submit" value="consultar" />
</form>

    </body>
</html>

Figura 60 – listar.jsp Fonte: Autoria Própria.

ATUALIZANDO DADOS COM SEVLET E JSP

A figura 61, demonstra o uso o update para estarmos alterando 3 campos
a partir de um critério de busca pelo campo nome para o primeiro documento
da coleção, lembrando de importar a classe import static com.mongodb.client.model.Filters.*; para utilização da função eq. A página dealteração dos dados é semelhante ao da figura 58, bastando alterar alguns itens, conforme é mostrada na figura 62.

@WebServlet("/AlterarControler")
public class AlterarControler extends HttpServlet {
     private static final long serialVersionUID = 1L;

     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      Pessoa pessoa = new Pessoa();

     // Recuperando dados do JSP
     pessoa.setNome(request.getParameter("nome"));
     pessoa.setIdade(Integer.parseInt(request.getParameter("idade")));
     pessoa.setTelefone(request.getParameter("telefone"));
     pessoa.setEmail(request.getParameter("email"));

      // Criando a conexão
      MongoClient conexao = new MongoClient();

     // Acessando a DataBase TCC
     MongoDatabase dataBase = conexao.getDatabase("TCC");

     // Acessando a coleção
     MongoCollection<Document> collection = dataBase.getCollection("usuarios");

    // Update dos Dados
    UpdateResult update = collection.updateOne(eq("Nome",pessoa.getNome());
        new Document("$set",
            new Document("Info.Email",pessoa.getEmail())
                .append("Info.Telefone",pessoa.getTelefone())
                .append("Idade",pessoa.getIdate())
            ));
    }
}

Figura 61 – Servlet Update Fonte: Autoria Própria.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"     pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Atualizar Pessoa</title>
</head>
<body>
<form action="AlterarControler" method="post">
		   Nome: <input type="text" name="nome"/>
		   Idade: <input type="number" name="idade"/>
		   Telefone: <input type="text" name="telefone"/>
		   Email: <input type="text" name="email"/>

	   <input type="submit" value="Alterar Dados no MongoDB"/>
	</form>

</body>
</html>

Figura 62 – update.jsp Fonte: Autoria Própria.

DELETANDO DADOS COM SEVLET E JSP

Por último criaremos o servlet responsável por deletar os dados através de uma busca, passando como parâmetro o campo nome como critério, lembrando de importar a classe import static com.mongodb.client.model.Filters.*; para utilização da função eq. Como demonstrada na figura 63 e a página deletar.jsp na figura 64.

@WebServlet("/DeletarControle")
public class DeletarControler extends HttpServlet {
     private static final long serialVersionUID = 1L;

     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      Pessoa pessoa = new Pessoa();

     // Recuperando dados do JSP
     pessoa.setNome(request.getParameter("nome"));

      // Criando a conexão
      MongoClient conexao = new MongoClient();

     // Acessando a DataBase TCC
     MongoDatabase dataBase = conexao.getDatabase("TCC");

     // Acessando a coleção
     MongoCollection<Document> collection = dataBase.getCollection("usuarios");

    // Deletando dos Dados
    DeleteResult deleteResult = collection.deleteOne(eq("Nome",pessoa.getNome());
    }
}

Figura 63 – Servlet Deletar Fonte: Autoria Própria.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"     pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Deletar Pessoa</title>
</head>
<body>
<form action="DeletarControler" method="post">
		   Nome: <input type="text" name="nome"/>

	   <input type="submit" value="Alterar Dados no MongoDB"/>
	</form>

   </body>
</html>

Figura 64 – deletar.jsp Fonte: Autoria Própria.

Nesta sessão, abrangeu o uso da tecnologia Java EE trabalhando em conjunto com o MongoDB, através de Servlets e JSP para estarem interagindo e manipulando os dados entres os formulários web.

Como foi abordado ao longo dessas últimas sessões, a comunicação entre uma aplicação java seja ela web ou não com o Mongodb é bem simples de ser implementada e de fácil aprendizagem. Visto que não necessitamos utilizar SQL em nossos códigos e nem mesmo fazer uso de joins, tornando assim o desenvolvimento da aplicação bem rápida e pequena.

A próxima sessão será apresenta um framework Java de persistência especifico para bancos NoSQL, que irá facilitar ainda mais o desenvolvimento de muitas outras aplicações tanto web quanto aplicações para desktop.

REFERÊNCIAS

Marchioni, Francesco. MongoDB for Java Developers. Birmingham: Packt Publishing Ltd,2015.

 

 

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s