Buscar

15 - Aplicacao Web JSP-SERVLET-DAO

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Servidor 
Sistemas web
Aplicação Web – Java
JSP-Servlet-DAO
Aplicação Web Java
JSP – Servlet - DAO
• Para ilustrar uma aplicação Web Java, em camadas,
será utilizada uma entidade de nome produto que terá 3
atributos.
• A estrutura em camada está representada pelos
elementos abaixo:
– produto.jsp – representa uma das visões apresentadas ao– produto.jsp – representa uma das visões apresentadas ao
usuário. Apresenta ou captura dados de um produto. Submete
ações à Produto Servlet.java.
– ProdutoBean.java – representa o modelo de dados de um
produto, com seus atributos:codigo, descrição e valor unitário.
– ProdutoServlet.java – representa o controle de fluxo da
aplicação, processando a ação do usuário.
– ProdutoDAO.java – representa todo o controle e processamento
de acesso aos dados, operando sobre o modelo (ProdutoBean).
Aplicação Web Java
(diagrama UML)
• A página tem 3 elementos de caixa de texto (type=text) e
dois botões no padrão submit (type=submit).
• Cada caixa de texto tem um nome de qualificação que são
variáveis que levarão os dados até o container web Java
(Tomcat).
produto.jsp
produto.jsp
<tr> <td >CÓDIGO:</td><td><input type="text" name="cpo_codigo" 
cpo_codigo
cpo_descricao
cpo_valorunit
<form name="frmProdutos" method="post" action="produtos" >
size="12" value="<%= v_codigo%>"/></td></tr>
<tr> <td >DESCRIÇÃO:</td><td><input type="text" name="cpo_descricao" 
size ="45" value="<%=v_descricao%>"/></tr>
<tr> <td >VALOR UNIT:</td><td><input type="text" name="cpo_valorunit" 
size="10“ alue="<%=v_valorunit%>"/></td></tr>
<td><input type="submit" name="btn_acao" value="Incluir" /></td>
<td><input type="submit" name="btn_acao" value="Consultar" /></td>
• Dada a interface abaixo com os dados preenchidos, ao
acionar o botão Incluir, um envio de dados na forma de
POST é feito ao container web.
produto.jsp (submit incluir)
• O destino dos dados será a URL-padrão definida no action
da JSP (action=“produtos”).
• Os dados serão enviados em formato de POST HTTP:
cpo_codigo=45&cpo_descricao=Placa+de+Video&cpo_valo
runit=259.80&btn_acao=Incluir
• O container web Java recebe 4 variáveis:
cpo_codigo=45
cpo_descricao=Placa+de+Video
cpo_valorunit=259.80
btn_acao=Incluir
O objeto request e os parâmetros
btn_acao=Incluir
• As 4 variáveis passam a ser parâmetros inseridos dentro
do objeto request criado pelo container web.
• Esse objeto request poderá ser acessado por Servlet ou
JSP no contexto da aplicação Web em execução.
• No POST enviado a partir da página produto.jsp, a
URL-padrão (URL-pattern) definida é action=“produtos”.
• Essa URL-pattern está mapeada no arquivo web.xml
que é o descritor de publicação (deployment descriptor)
da aplicação Web.
• Com base no descritor, o container Web define que
Container Web e ação a ser executada
• Com base no descritor, o container Web define que
ação tomar. No caso é instanciar e executar uma
ProdutoServlet.
<servlet-mapping>
<servlet-name>ProdutoServlet</servlet-name>
<url-pattern>/produtos</url-pattern>
</servlet-mapping>
• A classe atuará como controlador do fluxo de ação do
usuário.
• Após realizar a ação deve selecionar uma visão a ser
apresentada, seja de sucesso da operação ou de
exceção que tenha ocorrido.
• A Servlet não constrói HTML e nem formata qualquer
ProdutoServlet
• A Servlet não constrói HTML e nem formata qualquer
mensagem de erro para o usuário.
• Uma página JSP será selecionada de acordo com a
resposta a ser retornada.
• A classe que continuará o processo da ação Incluir é a
classe ProdutoServlet.java.
• Por conta do envio ser POST o método doPost será
acionado pelo container web.
• No método doPost, a primeira lógica aplicada é
descobrir que ação será executada: Incluir ou
ProdutoServlet
descobrir que ação será executada: Incluir ou
Consultar?
• Para a tomada da decisão a Servlet precisa obter o
valor do parâmetro btn_acao e com base nesse valor
processar a ação a ser executada.
Classe ProdutoServlet (doPost)
protected void doPost(HttpServletRequest request, 
HttpServletResponse response) throws ServletException, IOException
{
try {
String acao = request.getParameter("btn_acao");
//O conteúdo do atributo VALUE do submit btn_acao = Incluir 
if (acao.equals("Incluir"))
incluirProdutoincluirProduto((requestrequest, , responseresponse););
//apresentar página - Ainda não implementado
else {else {
RequestDispatcher rd = 
request.getRequestDispatcher("naoImplementado.jsp");
rd.forward(request, response);
}
} catch (Exception objEx) {
request.setAttribute("objExcecao", objEx);
RequestDispatcher rd = 
request.getRequestDispatcher("paginaErro.jsp");
rd.forward(request, response);
}
}
Classe ProdutoServlet (incluirProduto)
private void incluirProduto (HttpServletRequest request, 
HttpServletResponse response) throws Exception {
try {
String strCodigo = request.getParameter("cpo_codigo");
int icodigo = Integer.parseInt(strCodigo);
String strDescricao = request.getParameter("cpo_descricao");
String strValor = request.getParameter("cpo_valorunit");
float fvalor = Float.parseFloat(strValor);
ProdutoBeanProdutoBean produto = produto = newnew ProdutoBeanProdutoBean((icodigoicodigo, , strDescricaostrDescricao, , 
fvalorfvalor););fvalorfvalor););
ProdutoDAO dao = new ProdutoDAO();
daodao..incluirProdutoDAOincluirProdutoDAO(produto);(produto);
RequestDispatcher rd = 
request.getRequestDispatcher("cadastrado.jsp");
rd.forward(request, response);
} catch (Exception objEx) {
request.setAttribute("objExcecao", objEx);
RequestDispatcher rd = 
request.getRequestDispatcher("paginaErro.jsp");
rd.forward(request, response);
}
Classe ProdutoBean (entidade – model)
public class ProdutoBean {
private int codigo;
private String descricao;
private float valorUnit;
public ProdutoBean(int codigo, String descricao, float valorUnit) {
this.codigo = codigo;
this.descricao = descricao;
this.valorUnit = valorUnit;
}
• Na classe ProdutoServlet, foi instanciado o objeto produto• Na classe ProdutoServlet, foi instanciado o objeto produto
da classe ProdutoBean. Este objeto será passado ao
método incluirProduto da classe ProdutoDAO.
produto
codigo=45
descricao=“placa de video”
valorunit=259.80
ProdutoBeanProdutoBean produto = produto = newnew ProdutoBeanProdutoBean((icodigoicodigo, , strDescricaostrDescricao, , fvalorfvalor););
daodao..incluirProdutoDAOincluirProdutoDAO(produto);(produto);
• O código abaixo mostra a estrutura do construtor e dos
demais métodos.
Classe ProdutoDAO
import java.sql.*;
public class ProdutoDAO {
Connection conexao = null;
public ProdutoDAO () throws Exception {
try {
conexao = FabricaConexao.abreConexaoMySQL();
} catch (Exception ex){} catch (Exception ex){
throw ex;
}
}
public void incluirProdutoDAO (ProdutoBean objProd) throws Exception {
}
public ProdutoBean consultarProdutoDAO (int codigo) throws Exception {
}
public void alterarProdutoDAO (ProdutoBean objProd) throws Exception {
}
public void excluirProdutoDAO (int codigo) throws Exception {
}
}
Classe ProdutoDAO
public void incluirProdutoDAO (ProdutoBean produto) 
throws Exception 
Connection conexao = FabricaConexao.abreConexaoMySQL();
try {
String insere = "INSERT INTO TBProdutos VALUES (?, ?, ?)";
produto
codigo=45
descricao=“placa de video”
valorunit=259.80
• O código abaixo mostra a implementação do método
incluirProdutoDAO
String insere = "INSERT INTO TBProdutos VALUES (?, ?, ?)";
PreparedStatement comandoSQL = conexao.prepareStatement(insere);
comandoSQL.setInt(1, produto.getCodigo());
comandoSQL.setString(2, produto.getDescricao());
comandoSQL.setFloat(3, produto.getValorUnit());
comandoSQL.execute();
}catch (Exception e){
throw new Exception ("Erro inserir produto dao:"+e.getMessage());
} finally {
conexao.close();
}
}

Outros materiais