gerador de código jsp baseado em projeto de banco de...
TRANSCRIPT
![Page 1: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/1.jpg)
Gerador de código JSP baseado em projeto de banco de dados MySQL
Juliane MeninOrientanda
Prof. Alexander Roberto ValdameriOrientador
![Page 2: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/2.jpg)
Roteiro
� Introdução e Objetivos� Fundamentação Teórica� Especificação� Implementação� Apresentação da Ferramenta� Conclusão� Extensões
![Page 3: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/3.jpg)
Introdução
� JSP� Servlets� Diferenças JSP e Servlets� Banco de Dados MySQL� Geração de Código� Ferramentas Geração de Código
Introdução e Objetivos
![Page 4: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/4.jpg)
Objetivos
� Desenvolver uma ferramenta para a geração de código para tecnologia JSP, a partir das definições encontradas em uma base de dados MySQL.
Introdução e Objetivos
![Page 5: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/5.jpg)
Motivação
� Auxiliar os programadores � Diminuir a necessidade de programação� Evitar código inconsistente
Introdução e Objetivos
![Page 6: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/6.jpg)
JSP
� Java Server Pages� Tecnologia baseada em Java � Simplifica o desenvolvimento de páginas
web� É compilado na forma de um servlet� Separa a programação da lógica� Reutilização
Fundamentação Teórica
![Page 7: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/7.jpg)
Funcionamento do JSP Fundamentação Teórica
Gera Resposta
Envia Resposta
Recebe solicitação
Servlet JSP carregado?
Servlet JSP atual?
CompilaServlet JSP
CarregaServlet
Não
Sim
Servlet compilador de página
Servidor de HTTP
Servlet de página JSP
Gera fonte de servlet JSP
Analisa JSP
Não
Sim
Container JSP
![Page 8: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/8.jpg)
Servlets
� Estende as funcionalidades do servidor� São independentes de plataforma� Camada intermediária entre Cliente HTTP
e servidor Web� Possui três métodos : init, destroy, service
Fundamentação Teórica
![Page 9: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/9.jpg)
JSP X ServletsFundamentação Teórica
Servlets JSP
JAVA HTML
O HTML é escrito no código Java
HTML Java
O código Java é escrito no HTML
![Page 10: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/10.jpg)
JSP X ServletsFundamentação Teórica
Servlet = Java-Fácil de entender-Controla o sistema-Classes pequenas-Lógica pura
Servlet = Java + HTML-HTML atrapalha o código Java-Difícil de entender HTML-Fácil de entender Java-Lógica com visualização-Classes gigantes
JSP = HTML-Fácil de entender HTML-Controla a visualização-Visualização pura
JSP = HTML + Java-Código Java atrapalha o HTML-Visualização com lógica-Fácil de entender HTML-Difícil de entender Java
Programador Programador
Designer Designer
![Page 11: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/11.jpg)
Banco de Dados MySQL
� Open Source� Fácil de usar� Baixo custo� Suporta diferentes tipos de tabelas
Fundamentação Teórica
![Page 12: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/12.jpg)
Tipos de tabelas MySQLFundamentação Teórica
Possui integridade referencial;
Tipo de tabela transacional;
Armazenamentos de dados em tablespace;Requer mais espaço em memória;
INNODB
Tabela padrão do MySQL;
Melhor desempenho para leituraNão possui integridade referencial;
Permite o controle de transações;
Há limite de tamanhos;
São tabelas rápidas;
MyISAM
CaracterísticasTabela
![Page 13: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/13.jpg)
Tipos de tabelas MySQLFundamentação Teórica
Fácil de manipular o controle de transações;
Recuperação automática de dados; BDB
São armazenadas em memória;São rápidas;
Conteúdo volátil;
Ideal para tabelas que são consultadas com muita freqüência;
HEAP
Divisão de tabelas grandes em tabelas pequenas;
Coleção de tabelas MyISAM idênticas;
MERGE
CaracterísticasTabela
![Page 14: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/14.jpg)
Geração de Código
� Qualidade� Consistência� Decisões não previstas� Mais tempo para o projeto
Fundamentação Teórica
O Código gerado não possui erro de sintaxeO código gerado é consistente no projeto
Apenas gerar os templates e executar o gerador
Não consome muito tempo com tarefas repetitivas
![Page 15: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/15.jpg)
Ferramentas para Gerar Código
� DBDesigner� CodeCharge� AspSys
Fundamentação Teórica
Integra Criação, Modelagem, desenvolvimento e manutenção dos dadosGera código para PHPGera código para várias linguagensPermite conexão com vários bancosGera interface personalizada
Gera código para as rotinas de cadastros em ASPFoi desenvolvida em ASP
![Page 16: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/16.jpg)
Visão Geral da FerramentaEspecificação
Desenvolvedor
a) Especifica a base de dados b) A Ferramenta faz a leitura da estrutura das tabelas.
c)Configuração das páginas d)Geração das páginas JSP
Desenvolvedor
![Page 17: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/17.jpg)
Casos de usoEspecificação
ud Diagrama de Casos de Uso
Desenvolvedor
Selecionar Base de Dados
Configurar Páginas
Visualizar PáginasGerar o código
Criar projeto
![Page 18: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/18.jpg)
Diagrama de classes Especificação
cd Diagrama de Classes
Projeto
- ds_projeto: char- diretorio: char- titulo: char- autor: char- Data: char- host: char- usuario: char- baseDados: char- senha: char
Visao
- nm_visao: char- ordem_tabela: char- ordem_campo: char- ordemTipo: char- condicao: char- l inhaPorPagina: int- titRel: char- posFormX: int- posFormY: int- largForm: int- altForm: int- ResTab: char- ResCampo: char- ResOp: char- ResDesc: char
Tabelas
- tabela: char- tipo: char
ChaveStrangeira
- tab_ref: char- campo_ref: char- campo: char
Campos
- nm_campo: char- tipo: char- tamanho: int- nulo: boolean- chave: boolean- extra: boolean- caption: char
Visao_tabela
- ehPrincipal: boolean
Grupo
- grupo: char- posLinha: int- posColuna: int- popPup: boolean
v isTabCamp
- tituloForm: char- visivel: boolean- caption: char- tamanho: int- tipo: char- tituloRel: char
Restricao
- campo: char- tabela: char- condicao: char- valor: char
1..*1
0..*
0
1 1..*
1
1..*
1
1..*
1
1..*
1 1..*
1..*1
![Page 19: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/19.jpg)
Técnicas e Ferramentas
� Java JDSK 1.5 � Eclipse 3.0� MySQL� JBoss
Implementação
![Page 20: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/20.jpg)
ArquiteturaImplementação
Conexão com o banco de dados
Ferramenta
Configurações GeraisDefinição da Integridade Referencial
Definindo páginas de erro
Leitura da Estrutura do banco de dados
Gerenciando Visões
Gerenciando GruposGerenciando Formulários
Gerenciando Relatórios
Gerando as páginas
Novo Projeto
Abrir Projeto
![Page 21: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/21.jpg)
Conexão com o Banco Implementação
![Page 22: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/22.jpg)
private void carregaTabs(){ //lê todas as tabelas da baseResultSet rsTab;try {
rsTab = this .cn.SQLexecuteQuery ( "show table status" );if (rsTab != null ){
while (rsTab.next()){Tabela tab = criaTabelas(rsTab);tabelas.add(tab);
}}}catch ( Exception e){ System .err.println (e.getMessage());
}
private void carregaEstrutura(){ //lê a estrutura dos campos da tabelaResultSet rsCamp;
try {Iterator i = tabelas.iterator();
while ( i.hasNext()) {Tabela tp = (Tabela) i.next();
rsCamp = this .cn.SQLexecuteQuery ( "Desc " +tp.getTabela());if (rsCamp != null )
while (rsCamp.next()){Campos camp = criaCampos(rsCamp,tp.getTabela().toSt ring());
campos.add(camp);}
}}catch ( SQLException e) { System .err.println (e.getMessage());
}
Implementação
Leitura da Estrutura das Tabelas
![Page 23: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/23.jpg)
private Campos criaCampos( ResultSet rsCamp, String tabela){ //instancia os campos {try {
Campos camp = new Campos();
camp.setTabela(tabela);camp.setCampo(rsCamp.getString(1));String tipo = rsCamp.getString(2);//verificifa o tipo do campocamp.setTipo(verificaTipo(tipo));//verifica o tamanhocamp.setTamanho(verificaTam(tipo));//verifica se o campo é nulocamp.setNulo(verificaNulo(rsCamp.getString(3)));//verifica se é chavecamp.setChave(verificaChave(rsCamp.getString(4)));
//verifica se é auto_incrementocamp.setIncremento(verificaIncremento(rsCamp.getStr ing(6)));
return camp;} catch ( Exception e){ System .out.print(e.getMessage()); return null ;}}
Implementação
Leitura da Estrutura das Tabelas
![Page 24: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/24.jpg)
ImplementaçãoConfigurações Gerais
Definindo Integridade
![Page 25: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/25.jpg)
ImplementaçãoGerenciando visão
Criando uma visão
![Page 26: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/26.jpg)
ImplementaçãoGerenciando um grupo
Criando um grupo
![Page 27: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/27.jpg)
ImplementaçãoConfigurando Relatório
Configurando Formulários
![Page 28: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/28.jpg)
Regras para o Formulário
� Se tamanho do campo < 80 = caixa de texto, senão textArea;
� Se campo auto-incremento então campo desabilitado;
� Se campo chave-primária e não visível então oculto
� Se campo chave estrangeira então selected
Implementação
![Page 29: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/29.jpg)
ImplementaçãoVisualizando os arquivos
Alterando o código
![Page 30: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/30.jpg)
Operacionalidade
Estudo de caso
FK_CLIENTE_PEDIDO
FK_CIDADE_CID_EST FK_ESTADO_CID_EST
FK_CLIENTE_CID_EST
FK_PEDIDO_ITENS
FK_PRODUTO_ITENS
Cidade
cd_cidadedesc_cidade
inttext
<pk>
Estado
cd_estadodesc_estado
inttext
<pk>
Produto
cd_produtodesc_produto
inttext
<pk>
Pedido
cd_pedidocd_cl ientedt_venda
intintdate
<pk><fk>
Cliente
cd_cl ientecd_cidadecd_estadonm_clienteruabairro
intintinttexttexttext
<pk><fk><fk>
Cidade_Estado
cd_cidadecd_estado
intint
<pk,fk1><pk,fk2>
Itens_pedido
cd_pedidocd_produtoqtdvalor
intintintfloat
<pk,fk1><pk,fk2>
![Page 31: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/31.jpg)
Operacionalidade
Página Inicial do Sistema
![Page 32: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/32.jpg)
Operacionalidade
Páginas de Apresentação Servidor Web
Estrutura das páginas geradas
Banco de Dados
ControladorRequest
Response
Acessa o Banco de dados
Retorna os dados
![Page 33: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/33.jpg)
Operacionalidade
public class Controlador extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServle tResponse response)
throws ServletException, java.io.IOException {
//decodifica a ação que é para executar de acordo co m URL
String acao = decodificaAcao(request);
String proximaPagina = "" ;
boolean achouPagina = false ; //controle para verificar se a página foi encontrad a
if (acao.equals( "abrir_Cliente" )){
proximaPagina = abrirCliente(request,response);
achouPagina = true ;
}
if (!achouPagina)
proximaPagina = "/pageNaoSalva.htm" ;
getServletContext().getRequestDispatcher(proximaPag ina).forward(request, response);
} //Decodifica a ação selecionada
protected String decodificaAcao(HttpServletRequest request) {
String caminho = request.getRequestURI();
String acao = caminho.substring(caminho.lastIndexOf( '/' )+1, caminho.lastIndexOf( ".do" ));
return acao;}
//Necessário para extender o HttpServlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, java.io. IOException { processRequest(request, response); }
protected void doPost(HttpServletRequest request, HttpServletRespons e response) throwsServletException, java.io.IOException { processRequest(request, response); }
Código do Controlador
![Page 34: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/34.jpg)
Implementação
protected String abrirCliente(HttpServletRequest request,ttpSer vletResponse response) throwsServletException, java.io.IOException{
String paginaErro= "/erro.htm" ;
String paginaSucesso= "/cliente_relacao.jsp" ;
String proximaPagina = paginaErro;
try { ...
ArrayList cidades = Conn.getListaCliente(param, limitePorPagi na);
request.getSession().setAttribute( "listaCliente" ,clientes);
proximaPagina = paginaSucesso;
} catch ( Exception e){ System. out.print(e.toString());}
return proximaPagina; }
Código do Controlador
public static ArrayList getListaCliente(int inicio, int qtd){
try { String sql = "Select CLIENTE.NM_CLIENTE as CLIENTE, CLIENTE.RUA, CLIENTE.BAIRRO, CIDADE.DESC_CIDADE as CIDADE, ESTADO.DESC_ESTADO as ESTADO from CLIENTE, CIDADE, ESTADO where CLIENTE.CD_CIDADE = CIDADE.CD_CIDADE and CLIENTE.CD_ ESTADO = ESTADO.CD_ESTADO order byCLIENTE.CD_CLIENTE asc LIMIT " +inicio+ "," +qtd;
connecta();
rs = st.executeQuery(sql);
ArrayList cliente = new ArrayList();
while (rs.next()){
Cliente umCliente = criaCliente(rs);
cliente.add(umCliente); }
return cliente; }
catch ( Exception e ){ System .out.println(e.getMessage()); return null; } }
![Page 35: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/35.jpg)
Implementação
<% ArrayList clientes = ( ArrayList )session.getAttribute( "listaCliente" );
...
<!-- Dados da Tabela -->
<% for ( int i = 0; i < clientes.size(); i++){
Cliente cliente = (Cliente)clientes.get(i);
if ((i % 2) == 0)
out.println( "<TR class='cor1'>" );
else
out.println( "<TR class='cor2'>" );
out.println( "<TD id=dados>" +cliente.getNm_cliente()+ "</TD>" );
out.println( "<TD id=dados>" +cliente.getDesc_cidade()+ "</TD>" );
out.println( "<TD id=dados>" +cliente.getDesc_estado()+ "</TD>" );
out.println( "<TD id=dados WIDTH='3%' ALIGN=CENTER><A HREF=altera_cliente.do?cd=" +cliente.getCd_cliente()+ "><IMG SRC='img/editar.png' BORDER=0 ALT='Editar Cliente'></IMG></A></TD>" );
out.println( "<TD id=dados WIDTH='3%' ALIGN=CENTER><A HREF=javascript:excluir(" +cliente.getCd_cliente()+ ")><IMG SRC='img/excluir.png' BORDER=0 ALT='Excluir Cliente'></IMG></A></TD>" );
out.println ("</TR>" );
} %>
Código da Página de Relatório
![Page 36: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/36.jpg)
Implementação
Apresentação do Relatório
![Page 37: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/37.jpg)
Apresentação do FormulárioFundamentação Teórica
![Page 38: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/38.jpg)
Conclusões
O objetivo foi alcançado gerando código para as rotinas básicas de um sistema como:
� Inclusão� Exclusão� Alteração� Pesquisas� Relatórios
Nos relatórios é permitida a customização, como exemplo, definir atributos de ordenação e paginação de registros.
Conclusões
![Page 39: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/39.jpg)
Conclusões
� A utilização da IDE eclipse mostrou-se adequada a construção e depuração do software desenvolvido;
� Execução multiplataforma.
Conclusões
![Page 40: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/40.jpg)
Extensões
� permitir a utilização de outros bancos de dados como PostGree, SQLServer ou Oracle;
� permitir ao desenvolvedor a definição de seu próprio layout do aplicativo, através de folhas de estilos;
� permitir a geração de relatórios mais complexos baseados nas funções de grupos.
Extensões
![Page 41: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/41.jpg)
Relevância
Este trabalho foi muito importante para mim através dele :
� Aumentei o meu conhecimento em Java, que é uma linguagem poderosa;
� Aprendi a desenvolver interfaces em Java;� Aprendi JSP, que é um tecnologia
baseada em Java;
Relevância
![Page 42: Gerador de código JSP baseado em projeto de banco de ...campeche.inf.furb.br/tccs/2005-I/2005-1julianemeninap.pdf · protected void doGet(HttpServletRequest request, HttpServletResponse](https://reader034.vdocuments.net/reader034/viewer/2022052407/5be7765609d3f23a558c2e94/html5/thumbnails/42.jpg)
Gerador de código JSP baseado em projeto de banco de dados MySQL
Juliane MeninOrientanda
Prof. Alexander Roberto ValdameriOrientador