Criando um Projeto Enterprise no Netbeans
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
Criando um Projeto Enterprise no Netbeans
Olá Amigos
O NetBeans é a IDE oficial da Oracle. Ele tem como vantagem a utilização de Wizards bem mais robustos e completos que outras IDEs. Isto diminui a curva de aprendizado e nos auxiliam no aprendizado de novas tecnologias.
Iremos criar um projeto Enterprise (EAR) completo com módulos EJB e WEB (JSP + Servlet + EJB + JPA + MySQL).
Criando o primeiro Projeto Enterprise
O roteiro:
Faremos um projeto com as seguintes características:
• Web (JSP + Servlet) Padrão de projeto MVC
• Componentes Corporativos (EJB + JPA) Padrão de projeto DAO
• Uso de Injeção de dependência, inversão de controle, Anotações
Seguiremos os seguintes passos
1. Criar Data Souce ABA (Clique aqui)
2. Criar projeto EAR (JEE aplicativo Corporativo)
3. Modulos EJB e WEB
4. Criar entidades UP
5. Criar EJB
6. Entity Manage
7. Servlet (@EJB)
8. JSP
Mãos à obra
1. Criação do Data Source
Siga os passos deste post Clique aqui.
2. Criar projeto EAR (JEE aplicativo Corporativo)
Criando o primeiro Projeto Enterprise.
1. Vamos criar o projeto agora.
2. Acesse o menu Arquivo >> Novo projeto ou Ctrl + Shift + N
3. Na janela seguinte selecione em Categoria “Java EE” e em projetos “Aplicativo Enterprise” em seguida selecione o botão “Próximo”.
4. Escreva o nome do projeto “AcademicNet”.
Atenção: Não deixe espaço no path do projeto. Caso contrário podem ocorrer erros na compilação.
5. Selecione próximo.
6. Marque as opções de “Criar módulo EJB” e “Criar módulo de aplicativo Web”
7. Selecione Finalizar
8. O seu projeto deve ficar desta forma:
Criando a tela para preenchimento dos dados
1. Selecione o projeto web
2. Clique com o botão direito, selecione novo e escolha “JSP…”
3. Nomeie o arquivo como “aluno”
4. Selecione finalizar
5. Escreva na página o código a seguir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <!DOCTYPE html> <html lang="pt"> <head> <title>Cadastro de Aluno</title> </head> <body> <div align="center"> <form method="post" action="AlunoServlet"> <fieldset> <legend>Cadastro de Alunos</legend> <label>Matrícula: </label><input name="matricula" required value="${aluno.matricula}" placeholder="2236541" /><br /> <label>Name:</label><input name="nome" autofocus="autofocus" placeholder="Nome" value="${aluno.nome}"/><br /> <label>Telefone:</label><input type="tel" name="telefone" placeholder="9999-9999" value="${aluno.telefone}" /><br /> <label>Email:</label><input type="email" name="email" placeholder="andre@feltex.com.br" value="${aluno.email}"/><br /> <label>Data Cadastro:</label><input type="date" name="dataCadastro" value="${aluno.dataCadastro}" placeholder="10/10/2014" /><br /> <label>Ação</label> <select name="acao" required> <option selected value="Incluir">Incluir</option> <option value="Alterar">Alterar</option> <option value="Excluir">Excluir</option> <option value="Consultar">Consultar</option> </select><br /> <input type="submit" value="Enviar"> <input type="reset" value="Limpar"> <br /> </fieldset> </form> </div> </body> </html> |
6. Crie um link para esta página dentro o arquivo index.html
1 2 3 4 5 6 7 8 9 10 | <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <a href="aluno.jsp">Cadastro de Aluno!</h1></a> </body> </html> |
Criando o Servlet
1. Selecione novamente o projeto web. Clique com o botão direito, escolha a opção “Servlet…”
2. Preencha os dados conforme a seguinte tela e selecione próximo
3. Observe que o nome do pacote não deve ser deixado em branco.
4.No passo seguinte do wizard não marque a opção “adicionar informação ao descritor de implementação (web.xml)”, pois utilizaremos anotações.
5. Selecione finalizar. Agora o nosso servlet foi criado.
6. Agora devemos realizar a leitura dos dados da tela.
7. Mas antes devemos criar a classe de entidade que receberá os dados da tela.
Criando Classe de entidade
1. As classes de entidade são criadas no projeto EJB. A razão é bem clara, uma vez que os EJBs serão responsáveis por usar essas classes para persistência através de JPA.
2. Selecione o projeto EJB >> Novo >> “Classe da entidade…”.
3. Será apresentada a seguinte tela:
4. Preencha os dados conforme a imagem. Não se esqueça de marcar a opção “Criar unidade de persistência”. Selecione próximo.
5. Será exibida a tela com informações da unidade de persistência.
6. Na opção “Fonte de dados” selecione “Nova fonte de dados…”
7. Preencha a tela a seguir com os seguintes dados
8. jdbc >> é um padrão de nomenclatura para recursos de acesso a banco de dados
9. E a conexão de banco de dados que escolhemos é o data source que criamos no início deste manual.
10. Confirme (OK)
11. Deixe a “Estratégia de geração de tabela como ‘Criar’”. Selecione finalizar.
12. Agora na entidade que acabamos de criar, vamos adicionar os atributos.
13. matricula, nome, telefone, email e dataCadastro.
14. Para gerar os métodos Gets e Sets podemos clicar com o botão direito no código e escolher “inserir código…” ( Alt + insert) e selecionar “Getter e Setter…”
16. Ao selecionar os atributos os gets e sets serão criados automaticamente.
17. Para gerar o método toString() podemos clicar com o botão direito no código e escolher “inserir toString…” ( Alt + insert) selecionar “toString()…”
Criação do EJB
Agora vamos criar o EJB que fará a persistência dos dados no banco bdacademicnet.
1. Selecione o projeto EJB. Botão direito >> Novo >> Bean de Sessão
2. Preencha os dados conforme a tela abaixo:
3. Selecione finalizar.
4. Assim temos um Bean Local e sem estado (Stateless)
5. Clique na classe e use a opção de inserir código novamente (Alt + insert).
6. Escolha a opção “Utilizar gerenciador de Entidade”
7. Este gerenciador de entidade é a unidade de persistência que criamos ao adicionar uma entidade ao projeto. Caso não se lembre disso volte ao passo de criação da classe de entidade.
8. Observe que o método de persist recebe um object, que é PAI de todas as classes Java. Vamos especializar para a nossa classe Aluno.
9. Em seguida vamos criar os outros métodos do CRUD.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | package br.com.feltex.academicnet.ejb; import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.criteria.CriteriaQuery; import br.com.feltex.academicnet.entidade.Aluno; import br.com.feltex.academicnet.facade.AlunoFacade; @Stateless @LocalBean public class AlunoEJB { @PersistenceContext EntityManager em; public AlunoFacadeImp() { } public void alterar(Aluno aluno) { em.merge(aluno); } public Aluno consultar(Aluno aluno) { return em.find(Aluno.class, aluno.getMatricula()); } public void excluir(Aluno aluno) { aluno = consultar(aluno); if (aluno != null) { em.remove(aluno); } } public boolean existe(Aluno aluno) { return (consultar(aluno) != null); } public void inserir(Aluno aluno) { em.persist(aluno); } @SuppressWarnings({ "rawtypes", "unchecked" }) public List<Aluno> listar() { CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); cq.select(cq.from(Aluno.class)); return (List<Aluno>) em.createQuery(cq).getResultList(); } } |
10. Pronto. O nosso EJB já é capaz de fazer as 4 operações básicas com o Banco de dados.
Chamar o EJB do Servlet
Neste passo vamos preencher adicionar os dados da tela na entidade. Em seguida chamaremos o EJB para fazer a persistência em nosso banco de dados.
1. Abra o servlet AlunoServlet dentro do projeto Web.
2. Utilize Alt + insert. Selecione “Chamar Enterprise Bean…”
3. Procure o nosso EJB no projeto AcademicNet-ejb.
4. Confirme a seleção.
5. Agora precisamos receber os dados da tela.
6. Adicione ao método processRequest(….) a criação de uma classe Aluno, realize os sets necessários e em seguida utilize o método persist do EJB.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | package br.com.feltex.academicnet.servlet; import br.com.feltex.academicnet.ejb.AlunoEJB; import br.com.feltex.academicnet.entidade.Aluno; import java.io.IOException; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import javax.ejb.EJB; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @author Félix */ @WebServlet(name = "AlunoServlet", urlPatterns = {"/AlunoServlet"}) public class AlunoServlet extends HttpServlet { @EJB private AlunoEJB alunoEJB; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String acao = request.getParameter("acao"); String destino = "sucesso.jsp"; String mensagem = ""; List<Aluno> lista = new ArrayList<>(); Aluno aluno = new Aluno(); try { //Se a ação for DIFERENTE de Listar são lidos os dados da tela if (!acao.equalsIgnoreCase("Listar")) { aluno.setMatricula(Long.parseLong(request.getParameter("matricula"))); aluno.setNome(request.getParameter("nome")); aluno.setTelefone(request.getParameter("telefone")); aluno.setEmail(request.getParameter("email")); //Faz a leitura da data de cadastro. Caso ocorra um erro de formatação // o sistema utilizará a data atual try { DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); aluno.setDataCadastro(df.parse(request.getParameter("dataCadastro"))); } catch (Exception e) { aluno.setDataCadastro(new Date()); } } if (acao.equalsIgnoreCase("Incluir")) { // Verifica se a matrícula informada já existe no Banco de Dados // Se existir enviar uma mensagem senão faz a inclusão if (alunoEJB.existe(aluno)) { mensagem = "Matrícula informada já existe!"; } else { alunoEJB.inserir(aluno); } } else if (acao.equalsIgnoreCase("Alterar")) { alunoEJB.alterar(aluno); } else if (acao.equalsIgnoreCase("Excluir")) { alunoEJB.excluir(aluno); } else if (acao.equalsIgnoreCase("Consultar")) { request.setAttribute("aluno", aluno); aluno = alunoEJB.consultar(aluno); destino = "aluno.jsp"; } } catch (Exception e) { mensagem += e.getMessage(); destino = "erro.jsp"; e.printStackTrace(); } // Se a mensagem estiver vazia significa que houve sucesso! // Senão será exibida a tela de erro do sistema. if (mensagem.length() == 0) { mensagem = "Aluno Cadastrado com sucesso!"; } else { destino = "erro.jsp"; } // Lista todos os registros existente no Banco de Dados lista = alunoEJB.listar(); request.setAttribute("listaAluno", lista); request.setAttribute("mensagem", mensagem); //O sistema é direcionado para a página //sucesso.jsp Se tudo ocorreu bem //erro.jsp se houver algum problema. RequestDispatcher rd = request.getRequestDispatcher(destino); rd.forward(request, response); response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response.getWriter()) { /* TODO output your page here. You may use following sample code. */ out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet AlunoServlet at " + request.getContextPath() + "</h1>"); out.println("</body>"); out.println("</html>"); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. * * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> } |
7. Pronto. Nosso sistema está completo. A Chamada é feita com o seguinte fluxo (JSP >> Servlet >> EJB >> JPA >> Banco de Dados).
Abraços e bons estudos.
Links relacionados
Leia também: Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL
Recomendo que leia: Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL + JMS (Topic)
Você irá gostar: Exemplo completo com JSF Primefaces + Hibernate + MySQL
Deixe um comentário
Você precisa fazer o login para publicar um comentário.