SlideShare uma empresa Scribd logo
JAVAWEB Introdução a Java volta para web! Zarathon Maia – zarathon@ufc.br
CRIANDO O BANCO E A TABELA A SEREM UTILIZADA NO PROGRAMA Criando o Banco de Dados: No prompt do MySQL: CREATE DATABASE  nomedobanco  <enter>   <enter> Criando a tabela com os campos: create table contatos (<enter> id BIGINT NOT NULL AUTO_INCREMENT,  <enter> nome VARCHAR(255), <enter> email VARCHAR(255), <enter> endereco VARCHAR(255), <enter> primary key (id) <enter> ); <enter>
CONECTOR Classe criada para guardar as informações da conexão com o banco de dados. package br.com.biloto.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Conector { public static Connection getConnection() throws SQLException { try { Class.forName(&quot;com.mysql.jdbc.Driver&quot;); String url = &quot;jdbc:mysql:// servidor:porta/bancodedados &quot;; return DriverManager.getConnection(url, &quot;root&quot;, “ senha &quot;); } catch (ClassNotFoundException e) { throw new SQLException(e.getMessage()); } } }
TESTE DO CONECTOR import br.com.biloto.jdbc.Conector; import com.mysql.jdbc.Connection; import java.sql.SQLException; public class Main { public static void main (String[] args) throws SQLException{ try { Connection con = (Connection) Conector.getConnection(); System.out.println(&quot;Você está conectado!&quot;); } catch (SQLException sQLException) { System.out.println(&quot;Ocorreu um erro!&quot;); } } }
JAVABEANS (CONTATO) Nada mais é do que uma classe, com um construtor vazio, seus métodos e seus respectivos get’s e set’s. package br.com.biloto.jdbc.modelo; public class Contato { private Long id; private String nome; private String email; private String endereco; public String getNome() { return this.nome;  } public void setNome(String novo) { this.nome = novo;  } public String getEmail() { return this.email;  } public void setEmail(String novo) { this.email = novo;  } public String getEndereco() { return this.endereco;  } public void setEndereco(String novo) { this.endereco = novo;  } public Long getId() { return this.id;  } public void setId(Long novo) { this.id = novo;  } }
INSERINDO O NOSSO PRIMEIRO CONTATO public class JDBCInsere { public static void main(String[] args) { try { // conectando Connection con = Conector.getConnection(); // cria um preparedStatement PreparedStatement stmt = con.prepareStatement(&quot;insert into contatos ( nome,email,endereco) values (?,?,?)&quot;); // preenche os valores stmt.setString(1, “Raimundinho”); stmt.setString(2, “contato@raimundinho.com.br”); stmt.setString(3, “R. Vergueiro 3185 cj57”); // executa stmt.execute(); stmt.close(); System.out.println(&quot;Gravado!&quot;); con.close(); } catch (SQLException e) { e.printStackTrace(); } } }
DAO – DATA ACCESS OBJECT Esta idéia, inocente a primeira vista, é capaz de isolar todo o acesso a banco em classes bem simples, cuja instância é um objeto responsável por acessar os dados. Da responsabilidade deste objeto surgiu o nome de  Data Access Object ou simplesmente DAO,  um dos mais famosos padrões de desenvolvimento. public class ContatoDAO { // a conexão com o banco de dados private Connection connection; public ContatoDAO() throws SQLException { this.connection = ConnectionFactory.getConnection(); } public void adiciona(Contato contato) throws SQLException { // prepared statement para inserção PreparedStatement stmt = this.connection.prepareStatement(&quot;insert into contatos (nome,email,endereco) values (?, ?, ?)&quot;); // seta os valores stmt.setString(1,contato.getNome()); stmt.setString(2,contato.getEmail()); stmt.setString(3,contato.getEndereco()); // executa stmt.execute(); stmt.close(); } }
JSP – JAVA SERVER PAGES SCRIPTLET : Para escrever código java na sua página basta escrevê-lo entre as tags <% e %>.Esse código é chamado de  scriptlet. COMENTÁRIOS:  <%--comentário em jsp --%> LISTANDO CONTATOS: <% ContatoDAO dao = new ContatoDAO(); List contatos = dao.getLista(); for (int i = 0; i < contatos.size(); i++ ) { Contato contato = (Contato) contatos.get(i); %> <li><%=contato.getNome()%>, <%=contato.getEmail()%>: <%=contato.getEndereco()%></li> <% } %>
EU NÃO QUERO CÓDIGO JAVA NO MEU JSP! É complicado ficar escrevendo Java em seu arquivo jsp, não é? Primeiro fica tudo mal escrito e difícil de ler. O Java passa a atrapalhar o código html em vez de ajudar. Depois, quando o responsável pelo design gráfico da página quiser alterar algo terá que conhecer Java para entender o que está escrito lá dentro... hmm... não parece uma boa solução.
JSP – JAVA SERVER PAGES EXPRESSION LANGUAGE: Para remover um pouco do código java que fica na página jsp a Sun desenvolveu uma linguagem chamada Expression Language que é interpretada pelo servlet contêiner. Na Expression Language ${contado.nome} chamará a função getNome por padrão. Para que isso sempre funcione devemos colocar o parâmetro em letra minúscula ou seja ${contato.Nome} não funciona. Ex.: ${param.nomedoparametro} JSP:USEBEANS: Uma nova forma alternativa para criar objetos sem a necessidade de Scriptlet. < jsp:useBean  id=&quot;contato“ class=&quot;br.com.caelum.jdbc.modelo.Contato&quot; / >
JSTL - BIBLIOTECA DE TAGS A JSTL é a api que encapsulou em tags simples toda a funcionalidade que diversas páginas web precisam, como controle de laços (fors), controle de fluxo do tipo if else,manipulação de dados xml e a internacionalização de sua aplicação. A JSTL foi a forma encontrada de padronizar o trabalho de milhares de programadores de páginas JSP. <%@ taglib uri=&quot;http://java.sun.com/jsp/jstl/core&quot; prefix=&quot;c&quot; %>
JSTL - BIBLIOTECA DE TAGS C:OUT A partir deste momento, temos a variável dao no chamado escopo de página, esse é o escopo chamado pageContext, onde os beans ficam armazenados. Podemos mostrar o nome do primeiro contato usando a JSTL core. Para isso usaremos o prefixo configurado no cabeçalho: c. <c:out value=&quot;${dao.lista[0].nome}&quot;/> C:FOREACH A JSTL core disponibiliza uma tag chamada c:forEach capaz de iterar por uma coleção, exatamente o que precisamos. O exemplo a seguir mostra o uso de expression language de uma maneira muito mais elegante. <c:forEach var=&quot;contato&quot; items=&quot;${dao.lista}&quot;> <li>${contato.nome}, ${contato.email}: ${contato.endereco}</li> </c:forEach> “ Mais elegante que o código que foi apresentado usando scriptletss, não?” C:SET A tag c:set permite armazenar o resultado da expressão contida no atributo value em outravariável, para algum tipo de manipulação futura. <c:set var=&quot;nome&quot; value=&quot;${contato.nome}&quot;/>
JSTL - BIBLIOTECA DE TAGS Como você pode perceber é muito simples aprender a utilizar uma taglib, basta ler o que ela faz, passar os argumentos corretos e pronto. Sugero a leitura completa da especificação da JSTL no site da sun: http://java.sun.com/products/jsp/jstl/ http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html Não precisa decorar tudo, basta ler por cima e saber o que existe e o que não existe. Quando surgir a necessidade do uso de uma dessas tags você terá ela disponível em suas mãos.
JSTL - BIBLIOTECA DE TAGS A lista completa das tags da versão 1.1 da JSTL core pode ser facilmente compreendida: c:catch  bloco do tipo try/catch c:choose  bloco do tipo switch c:forEach  for c:forTokens  for em tokens (ex: “a,b,c” separados por vírgula) c:if  if c:import  import c:otherwise  default do switch c:out  saída c:param  parâmetro c:redirect  redirecionamento c:remove  remoção de variável c:set  criação de variável c:url  link para outra pagina c:when  teste para o switch
JSTL - BIBLIOTECA DE TAGS C:IMPORT Uma pergunta que sempre aparece na vida dos programadores é a de como executar o código de outro arquivo jsp dentro de um primeiro arquivo jsp, isto é, você quer colocar um cabeçalho? Um rodapé? <c:import url=&quot;outrapagina.jsp&quot;/> C:URL As vezes não é simples trabalhar com links pois temos que pensar na url que o cliente acessa ao visualizar a nossa página. <c:url value=“sucesso-cadastro.html”/>
SERVLETS Uma servlet funciona como um pequeno servidor (servidorzinho em inglês) que recebe chamadas de diversos clientes. Colocar todo HTML dentro de uma Servlet realmente não parece a melhor idéia. O que acontece quando precisamos mudar o design da página? O seu designer não vai ter tempo de editar sua Servlet, recompilá-la e colocá-la no servidor. Uma idéia mais interessante é usar o que é bom de cada um dos dois. O JSP foi feito apenas para apresentar o resultado, e ele não deveria fazer acessos a bancos e outros. Isso deveria estar na Servlet. O ideal então é que a Servlet faça o trabalho sujo e árduo, e o JSP apenas apresente esses resultados. A Servlet possui a lógica de negócios (ou regras de negócio)e o JSP tem a lógica de apresentação.
SERVLETS REQUEST DISPATCHER Poderíamos melhorar a nossa aplicação se trabalhássemos com o código java na servlet e depois o código html em uma página jsp. A api da servlet nos permite fazer tal redirecionamento. Basta conhecermos a url que queremos acessar e podemos usar o que fora chamado de RequestDispatcher para acessar outro recurso web, seja esse recurso uma página jsp ou uma servlet: RequestDispatcher rd = request.getRequestDispatcher(“/contatoadicionado.jsp”); rd.forward(request,response); return; Agora podemos facilmente executar a lógica de nossa aplicação web em uma servlet e então redirecionar para uma página jsp, onde você possui seu código html.
BIBLIOGRAFIA www.caelum.com.br  – apostila FJ21 www.guj.com.br www.javafree.org
LINK PARA O PROJETO SISTEMA DE CONTATOS 1.0 (NETBEANS) Abaixo estou disponibilizando o meu código-fonte do Projeto Sistema de Contatos 1.0, desenvolvido na IDE Netbeans 6.1. http://rapidshare.com/files/118954003/SistemaDeContatos.rar.html Enjoy!

Mais conteúdo relacionado

Mais procurados

Tutorial Dwr - Combos Dependentes
Tutorial Dwr - Combos DependentesTutorial Dwr - Combos Dependentes
Tutorial Dwr - Combos Dependentes
Alexandre S. Oliveira
 
Mvc delphi
Mvc delphiMvc delphi
Cadastro de clientes em c#
Cadastro de clientes em c#Cadastro de clientes em c#
Cadastro de clientes em c#
André Luiz
 
01-Introdução HTML - DDW II
01-Introdução HTML - DDW II01-Introdução HTML - DDW II
01-Introdução HTML - DDW II
Evelyn Ramos
 
Introdução a Big Data e Apache Solr
Introdução a Big Data e Apache SolrIntrodução a Big Data e Apache Solr
Introdução a Big Data e Apache Solr
Juliano Martins
 
Iniciando em html5 seleção gustavo
Iniciando em html5   seleção gustavoIniciando em html5   seleção gustavo
Iniciando em html5 seleção gustavo
Gustavo Passos
 
Java script aula 10 - angularjs
Java script   aula 10 - angularjsJava script   aula 10 - angularjs
Java script aula 10 - angularjs
Cristiano Pires Martins
 
Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)
Rodrigo Branas
 
Java script aula 08 - formulários
Java script   aula 08 - formuláriosJava script   aula 08 - formulários
Java script aula 08 - formulários
Cristiano Pires Martins
 
Melhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryMelhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQuery
Harlley Oliveira
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Rodrigo Branas
 
Spa com angular js flisol 2015 - aquidauana ms
Spa com angular js   flisol 2015 - aquidauana msSpa com angular js   flisol 2015 - aquidauana ms
Spa com angular js flisol 2015 - aquidauana ms
Paulo Roberto Sampaio Bezerra
 
Apresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCApresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVC
Zarathon Maia
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de Refactoring
Rodrigo Branas
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
Guilherme Blanco
 
Rails na prática
Rails na práticaRails na prática
Rails na prática
Marco Antonio Filho
 
Java script - funções
Java script - funçõesJava script - funções
Java script - funções
Cristiano Pires Martins
 
Php 05 Mvc
Php 05 MvcPhp 05 Mvc
Php 05 Mvc
Regis Magalhães
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
Michel Ribeiro
 
Solr - Indexação e Busca com ferramenta Open Source
Solr - Indexação e Busca com ferramenta Open SourceSolr - Indexação e Busca com ferramenta Open Source
Solr - Indexação e Busca com ferramenta Open Source
Marcelo Rodrigues
 

Mais procurados (20)

Tutorial Dwr - Combos Dependentes
Tutorial Dwr - Combos DependentesTutorial Dwr - Combos Dependentes
Tutorial Dwr - Combos Dependentes
 
Mvc delphi
Mvc delphiMvc delphi
Mvc delphi
 
Cadastro de clientes em c#
Cadastro de clientes em c#Cadastro de clientes em c#
Cadastro de clientes em c#
 
01-Introdução HTML - DDW II
01-Introdução HTML - DDW II01-Introdução HTML - DDW II
01-Introdução HTML - DDW II
 
Introdução a Big Data e Apache Solr
Introdução a Big Data e Apache SolrIntrodução a Big Data e Apache Solr
Introdução a Big Data e Apache Solr
 
Iniciando em html5 seleção gustavo
Iniciando em html5   seleção gustavoIniciando em html5   seleção gustavo
Iniciando em html5 seleção gustavo
 
Java script aula 10 - angularjs
Java script   aula 10 - angularjsJava script   aula 10 - angularjs
Java script aula 10 - angularjs
 
Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)
 
Java script aula 08 - formulários
Java script   aula 08 - formuláriosJava script   aula 08 - formulários
Java script aula 08 - formulários
 
Melhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryMelhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQuery
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
 
Spa com angular js flisol 2015 - aquidauana ms
Spa com angular js   flisol 2015 - aquidauana msSpa com angular js   flisol 2015 - aquidauana ms
Spa com angular js flisol 2015 - aquidauana ms
 
Apresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCApresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVC
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de Refactoring
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
Rails na prática
Rails na práticaRails na prática
Rails na prática
 
Java script - funções
Java script - funçõesJava script - funções
Java script - funções
 
Php 05 Mvc
Php 05 MvcPhp 05 Mvc
Php 05 Mvc
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
Solr - Indexação e Busca com ferramenta Open Source
Solr - Indexação e Busca com ferramenta Open SourceSolr - Indexação e Busca com ferramenta Open Source
Solr - Indexação e Busca com ferramenta Open Source
 

Destaque

Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung IICampus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Daniel Rehn
 
Presentació assamblea
Presentació assamblea Presentació assamblea
Presentació assamblea
FC Barcelona
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Manuel Menezes de Sequeira
 
Otimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - TchelinuxOtimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - Tchelinux
Elton Minetto
 
Lean Kanban FR 2013 - Vin et kanban
Lean Kanban FR 2013 - Vin et kanbanLean Kanban FR 2013 - Vin et kanban
Lean Kanban FR 2013 - Vin et kanban
Julien Fallet
 
Atelier agile 2009_09_27
Atelier agile 2009_09_27Atelier agile 2009_09_27
Atelier agile 2009_09_27
domidp
 
Tutorialphpmyadmin
TutorialphpmyadminTutorialphpmyadmin
Tutorialphpmyadmin
marcossonotec
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
elliando dias
 
MySQL Query Optimization
MySQL Query OptimizationMySQL Query Optimization
MySQL Query Optimization
Bianca Caruso da Paixão
 
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & ShipmanDominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
jonesshipman
 
Présentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tPrésentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@t
Francois Ostyn
 
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Daniel Rehn
 
02.10.2011 SC B.A.T II
02.10.2011   SC B.A.T II02.10.2011   SC B.A.T II
02.10.2011 SC B.A.T II
HerdwangerSV
 
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
dbi services
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
MongoDB
 
Digitale Mentalität II
Digitale Mentalität IIDigitale Mentalität II
NotORM
NotORMNotORM
NotORM
Tiago Davi
 
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
dmc digital media center GmbH
 
Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?
iniciativaverds
 

Destaque (20)

Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung IICampus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
 
Presentació assamblea
Presentació assamblea Presentació assamblea
Presentació assamblea
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Otimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - TchelinuxOtimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - Tchelinux
 
Lean Kanban FR 2013 - Vin et kanban
Lean Kanban FR 2013 - Vin et kanbanLean Kanban FR 2013 - Vin et kanban
Lean Kanban FR 2013 - Vin et kanban
 
Atelier agile 2009_09_27
Atelier agile 2009_09_27Atelier agile 2009_09_27
Atelier agile 2009_09_27
 
Tutorialphpmyadmin
TutorialphpmyadminTutorialphpmyadmin
Tutorialphpmyadmin
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
 
MySQL Query Optimization
MySQL Query OptimizationMySQL Query Optimization
MySQL Query Optimization
 
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & ShipmanDominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
 
Présentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tPrésentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@t
 
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
 
02.10.2011 SC B.A.T II
02.10.2011   SC B.A.T II02.10.2011   SC B.A.T II
02.10.2011 SC B.A.T II
 
Einführung in SCRUM
Einführung in SCRUMEinführung in SCRUM
Einführung in SCRUM
 
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
 
Digitale Mentalität II
Digitale Mentalität IIDigitale Mentalität II
Digitale Mentalität II
 
NotORM
NotORMNotORM
NotORM
 
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
 
Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?
 

Semelhante a Apresentação Java Web Si Ufc Quixadá

Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBC
Antonio Passos
 
Java 16 Jdbc
Java 16 JdbcJava 16 Jdbc
Java 16 Jdbc
Regis Magalhães
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
Mario Jorge Pereira
 
Java13
Java13Java13
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
CJR, UnB
 
02 - Fundamentos de Servlets
02 - Fundamentos de Servlets02 - Fundamentos de Servlets
02 - Fundamentos de Servlets
Marcio Marinho
 
ASP.NET MVC Mini Curso
ASP.NET MVC Mini CursoASP.NET MVC Mini Curso
ASP.NET MVC Mini Curso
Vinicius Rocha
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
Mario Sergio
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6
Bruno Borges
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
Anderson Araújo
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
Eduardo Bregaida
 
Django + extjs pelos forms
Django + extjs pelos formsDjango + extjs pelos forms
Django + extjs pelos forms
Moacir Filho
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
Jeison Barros
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
eduan
 
JDBC
JDBCJDBC
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITY
raquelcarsi
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
Verônica Veiga
 
Jdbc
JdbcJdbc
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
Eduardo Mendes
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
Denis L Presciliano
 

Semelhante a Apresentação Java Web Si Ufc Quixadá (20)

Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBC
 
Java 16 Jdbc
Java 16 JdbcJava 16 Jdbc
Java 16 Jdbc
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Java13
Java13Java13
Java13
 
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
 
02 - Fundamentos de Servlets
02 - Fundamentos de Servlets02 - Fundamentos de Servlets
02 - Fundamentos de Servlets
 
ASP.NET MVC Mini Curso
ASP.NET MVC Mini CursoASP.NET MVC Mini Curso
ASP.NET MVC Mini Curso
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Django + extjs pelos forms
Django + extjs pelos formsDjango + extjs pelos forms
Django + extjs pelos forms
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
JDBC
JDBCJDBC
JDBC
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITY
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
 
Jdbc
JdbcJdbc
Jdbc
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 

Mais de Zarathon Maia

Como ser um dev de vergonha!
Como ser um dev de vergonha!Como ser um dev de vergonha!
Como ser um dev de vergonha!
Zarathon Maia
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014
Zarathon Maia
 
Startup De estudantes à milionários
Startup  De estudantes à milionáriosStartup  De estudantes à milionários
Startup De estudantes à milionários
Zarathon Maia
 
Curso de HTML5 - Aula01
Curso de HTML5 - Aula01Curso de HTML5 - Aula01
Curso de HTML5 - Aula01
Zarathon Maia
 
Apresentação Wordpress FLISOL 2010
Apresentação Wordpress FLISOL 2010Apresentação Wordpress FLISOL 2010
Apresentação Wordpress FLISOL 2010
Zarathon Maia
 
Camisas Turma Ufc
Camisas Turma UfcCamisas Turma Ufc
Camisas Turma Ufc
Zarathon Maia
 
Apresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+HibernateApresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+Hibernate
Zarathon Maia
 

Mais de Zarathon Maia (7)

Como ser um dev de vergonha!
Como ser um dev de vergonha!Como ser um dev de vergonha!
Como ser um dev de vergonha!
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014
 
Startup De estudantes à milionários
Startup  De estudantes à milionáriosStartup  De estudantes à milionários
Startup De estudantes à milionários
 
Curso de HTML5 - Aula01
Curso de HTML5 - Aula01Curso de HTML5 - Aula01
Curso de HTML5 - Aula01
 
Apresentação Wordpress FLISOL 2010
Apresentação Wordpress FLISOL 2010Apresentação Wordpress FLISOL 2010
Apresentação Wordpress FLISOL 2010
 
Camisas Turma Ufc
Camisas Turma UfcCamisas Turma Ufc
Camisas Turma Ufc
 
Apresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+HibernateApresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+Hibernate
 

Apresentação Java Web Si Ufc Quixadá

  • 1. JAVAWEB Introdução a Java volta para web! Zarathon Maia – zarathon@ufc.br
  • 2. CRIANDO O BANCO E A TABELA A SEREM UTILIZADA NO PROGRAMA Criando o Banco de Dados: No prompt do MySQL: CREATE DATABASE nomedobanco <enter> <enter> Criando a tabela com os campos: create table contatos (<enter> id BIGINT NOT NULL AUTO_INCREMENT, <enter> nome VARCHAR(255), <enter> email VARCHAR(255), <enter> endereco VARCHAR(255), <enter> primary key (id) <enter> ); <enter>
  • 3. CONECTOR Classe criada para guardar as informações da conexão com o banco de dados. package br.com.biloto.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Conector { public static Connection getConnection() throws SQLException { try { Class.forName(&quot;com.mysql.jdbc.Driver&quot;); String url = &quot;jdbc:mysql:// servidor:porta/bancodedados &quot;; return DriverManager.getConnection(url, &quot;root&quot;, “ senha &quot;); } catch (ClassNotFoundException e) { throw new SQLException(e.getMessage()); } } }
  • 4. TESTE DO CONECTOR import br.com.biloto.jdbc.Conector; import com.mysql.jdbc.Connection; import java.sql.SQLException; public class Main { public static void main (String[] args) throws SQLException{ try { Connection con = (Connection) Conector.getConnection(); System.out.println(&quot;Você está conectado!&quot;); } catch (SQLException sQLException) { System.out.println(&quot;Ocorreu um erro!&quot;); } } }
  • 5. JAVABEANS (CONTATO) Nada mais é do que uma classe, com um construtor vazio, seus métodos e seus respectivos get’s e set’s. package br.com.biloto.jdbc.modelo; public class Contato { private Long id; private String nome; private String email; private String endereco; public String getNome() { return this.nome; } public void setNome(String novo) { this.nome = novo; } public String getEmail() { return this.email; } public void setEmail(String novo) { this.email = novo; } public String getEndereco() { return this.endereco; } public void setEndereco(String novo) { this.endereco = novo; } public Long getId() { return this.id; } public void setId(Long novo) { this.id = novo; } }
  • 6. INSERINDO O NOSSO PRIMEIRO CONTATO public class JDBCInsere { public static void main(String[] args) { try { // conectando Connection con = Conector.getConnection(); // cria um preparedStatement PreparedStatement stmt = con.prepareStatement(&quot;insert into contatos ( nome,email,endereco) values (?,?,?)&quot;); // preenche os valores stmt.setString(1, “Raimundinho”); stmt.setString(2, “contato@raimundinho.com.br”); stmt.setString(3, “R. Vergueiro 3185 cj57”); // executa stmt.execute(); stmt.close(); System.out.println(&quot;Gravado!&quot;); con.close(); } catch (SQLException e) { e.printStackTrace(); } } }
  • 7. DAO – DATA ACCESS OBJECT Esta idéia, inocente a primeira vista, é capaz de isolar todo o acesso a banco em classes bem simples, cuja instância é um objeto responsável por acessar os dados. Da responsabilidade deste objeto surgiu o nome de Data Access Object ou simplesmente DAO, um dos mais famosos padrões de desenvolvimento. public class ContatoDAO { // a conexão com o banco de dados private Connection connection; public ContatoDAO() throws SQLException { this.connection = ConnectionFactory.getConnection(); } public void adiciona(Contato contato) throws SQLException { // prepared statement para inserção PreparedStatement stmt = this.connection.prepareStatement(&quot;insert into contatos (nome,email,endereco) values (?, ?, ?)&quot;); // seta os valores stmt.setString(1,contato.getNome()); stmt.setString(2,contato.getEmail()); stmt.setString(3,contato.getEndereco()); // executa stmt.execute(); stmt.close(); } }
  • 8. JSP – JAVA SERVER PAGES SCRIPTLET : Para escrever código java na sua página basta escrevê-lo entre as tags <% e %>.Esse código é chamado de scriptlet. COMENTÁRIOS: <%--comentário em jsp --%> LISTANDO CONTATOS: <% ContatoDAO dao = new ContatoDAO(); List contatos = dao.getLista(); for (int i = 0; i < contatos.size(); i++ ) { Contato contato = (Contato) contatos.get(i); %> <li><%=contato.getNome()%>, <%=contato.getEmail()%>: <%=contato.getEndereco()%></li> <% } %>
  • 9. EU NÃO QUERO CÓDIGO JAVA NO MEU JSP! É complicado ficar escrevendo Java em seu arquivo jsp, não é? Primeiro fica tudo mal escrito e difícil de ler. O Java passa a atrapalhar o código html em vez de ajudar. Depois, quando o responsável pelo design gráfico da página quiser alterar algo terá que conhecer Java para entender o que está escrito lá dentro... hmm... não parece uma boa solução.
  • 10. JSP – JAVA SERVER PAGES EXPRESSION LANGUAGE: Para remover um pouco do código java que fica na página jsp a Sun desenvolveu uma linguagem chamada Expression Language que é interpretada pelo servlet contêiner. Na Expression Language ${contado.nome} chamará a função getNome por padrão. Para que isso sempre funcione devemos colocar o parâmetro em letra minúscula ou seja ${contato.Nome} não funciona. Ex.: ${param.nomedoparametro} JSP:USEBEANS: Uma nova forma alternativa para criar objetos sem a necessidade de Scriptlet. < jsp:useBean id=&quot;contato“ class=&quot;br.com.caelum.jdbc.modelo.Contato&quot; / >
  • 11. JSTL - BIBLIOTECA DE TAGS A JSTL é a api que encapsulou em tags simples toda a funcionalidade que diversas páginas web precisam, como controle de laços (fors), controle de fluxo do tipo if else,manipulação de dados xml e a internacionalização de sua aplicação. A JSTL foi a forma encontrada de padronizar o trabalho de milhares de programadores de páginas JSP. <%@ taglib uri=&quot;http://java.sun.com/jsp/jstl/core&quot; prefix=&quot;c&quot; %>
  • 12. JSTL - BIBLIOTECA DE TAGS C:OUT A partir deste momento, temos a variável dao no chamado escopo de página, esse é o escopo chamado pageContext, onde os beans ficam armazenados. Podemos mostrar o nome do primeiro contato usando a JSTL core. Para isso usaremos o prefixo configurado no cabeçalho: c. <c:out value=&quot;${dao.lista[0].nome}&quot;/> C:FOREACH A JSTL core disponibiliza uma tag chamada c:forEach capaz de iterar por uma coleção, exatamente o que precisamos. O exemplo a seguir mostra o uso de expression language de uma maneira muito mais elegante. <c:forEach var=&quot;contato&quot; items=&quot;${dao.lista}&quot;> <li>${contato.nome}, ${contato.email}: ${contato.endereco}</li> </c:forEach> “ Mais elegante que o código que foi apresentado usando scriptletss, não?” C:SET A tag c:set permite armazenar o resultado da expressão contida no atributo value em outravariável, para algum tipo de manipulação futura. <c:set var=&quot;nome&quot; value=&quot;${contato.nome}&quot;/>
  • 13. JSTL - BIBLIOTECA DE TAGS Como você pode perceber é muito simples aprender a utilizar uma taglib, basta ler o que ela faz, passar os argumentos corretos e pronto. Sugero a leitura completa da especificação da JSTL no site da sun: http://java.sun.com/products/jsp/jstl/ http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html Não precisa decorar tudo, basta ler por cima e saber o que existe e o que não existe. Quando surgir a necessidade do uso de uma dessas tags você terá ela disponível em suas mãos.
  • 14. JSTL - BIBLIOTECA DE TAGS A lista completa das tags da versão 1.1 da JSTL core pode ser facilmente compreendida: c:catch bloco do tipo try/catch c:choose bloco do tipo switch c:forEach for c:forTokens for em tokens (ex: “a,b,c” separados por vírgula) c:if if c:import import c:otherwise default do switch c:out saída c:param parâmetro c:redirect redirecionamento c:remove remoção de variável c:set criação de variável c:url link para outra pagina c:when teste para o switch
  • 15. JSTL - BIBLIOTECA DE TAGS C:IMPORT Uma pergunta que sempre aparece na vida dos programadores é a de como executar o código de outro arquivo jsp dentro de um primeiro arquivo jsp, isto é, você quer colocar um cabeçalho? Um rodapé? <c:import url=&quot;outrapagina.jsp&quot;/> C:URL As vezes não é simples trabalhar com links pois temos que pensar na url que o cliente acessa ao visualizar a nossa página. <c:url value=“sucesso-cadastro.html”/>
  • 16. SERVLETS Uma servlet funciona como um pequeno servidor (servidorzinho em inglês) que recebe chamadas de diversos clientes. Colocar todo HTML dentro de uma Servlet realmente não parece a melhor idéia. O que acontece quando precisamos mudar o design da página? O seu designer não vai ter tempo de editar sua Servlet, recompilá-la e colocá-la no servidor. Uma idéia mais interessante é usar o que é bom de cada um dos dois. O JSP foi feito apenas para apresentar o resultado, e ele não deveria fazer acessos a bancos e outros. Isso deveria estar na Servlet. O ideal então é que a Servlet faça o trabalho sujo e árduo, e o JSP apenas apresente esses resultados. A Servlet possui a lógica de negócios (ou regras de negócio)e o JSP tem a lógica de apresentação.
  • 17. SERVLETS REQUEST DISPATCHER Poderíamos melhorar a nossa aplicação se trabalhássemos com o código java na servlet e depois o código html em uma página jsp. A api da servlet nos permite fazer tal redirecionamento. Basta conhecermos a url que queremos acessar e podemos usar o que fora chamado de RequestDispatcher para acessar outro recurso web, seja esse recurso uma página jsp ou uma servlet: RequestDispatcher rd = request.getRequestDispatcher(“/contatoadicionado.jsp”); rd.forward(request,response); return; Agora podemos facilmente executar a lógica de nossa aplicação web em uma servlet e então redirecionar para uma página jsp, onde você possui seu código html.
  • 18. BIBLIOGRAFIA www.caelum.com.br – apostila FJ21 www.guj.com.br www.javafree.org
  • 19. LINK PARA O PROJETO SISTEMA DE CONTATOS 1.0 (NETBEANS) Abaixo estou disponibilizando o meu código-fonte do Projeto Sistema de Contatos 1.0, desenvolvido na IDE Netbeans 6.1. http://rapidshare.com/files/118954003/SistemaDeContatos.rar.html Enjoy!