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

Criando um Projeto Enterprise no Netbeans (1)

3. Na janela seguinte selecione em Categoria “Java EE” e em projetos “Aplicativo Enterprise” em seguida selecione o botão “Próximo”.

Criando um Projeto Enterprise no Netbeans (2)

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.

Criando um Projeto Enterprise no Netbeans (3)

5. Selecione próximo.

Criando um Projeto Enterprise no Netbeans (4)

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 um Projeto Enterprise no Netbeans (5)

Criando a tela para preenchimento dos dados

1. Selecione o projeto web
2. Clique com o botão direito, selecione novo e escolha “JSP…”

Criando um Projeto Enterprise no Netbeans (6)

3. Nomeie o arquivo como “aluno”

Criando um Projeto Enterprise no Netbeans (7)

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…”

Criando um Projeto Enterprise no Netbeans (8)

2. Preencha os dados conforme a seguinte tela e selecione próximo

Criando um Projeto Enterprise no Netbeans (9)

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.

Criando um Projeto Enterprise no Netbeans (10)

5. Selecione finalizar. Agora o nosso servlet foi criado.

Criando um Projeto Enterprise no Netbeans (11)

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…”.

Criando um Projeto Enterprise no Netbeans (12)

3. Será apresentada a seguinte tela:

Criando um Projeto Enterprise no Netbeans (13)

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…”

Criando um Projeto Enterprise no Netbeans (14)

7. Preencha a tela a seguir com os seguintes dados

Criando um Projeto Enterprise no Netbeans (15)

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.

Criando um Projeto Enterprise no Netbeans (16)

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…”

Criando um Projeto Enterprise no Netbeans (17)

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

Criando um Projeto Enterprise no Netbeans (18)

2. Preencha os dados conforme a tela abaixo:

Criando um Projeto Enterprise no Netbeans (19)

3. Selecione finalizar.
4. Assim temos um Bean Local e sem estado (Stateless)

Criando um Projeto Enterprise no Netbeans (20)

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”

Criando um Projeto Enterprise no Netbeans (21)

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.

Criando um Projeto Enterprise no Netbeans (22)

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.

Criando um Projeto Enterprise no Netbeans (23)

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…”

Criando um Projeto Enterprise no Netbeans (24)

3. Procure o nosso EJB no projeto AcademicNet-ejb.

Criando um Projeto Enterprise no Netbeans (25)

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.

Criando um Projeto Enterprise no Netbeans (26)

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