Apresentação Java Web Si Ufc Quixadá

19
JAVAWEB Introdução a Java volta para web! Zarathon Maia – [email protected]

description

Apresentação para um curso sobre Java voltada para web!

Transcript of Apresentação Java Web Si Ufc Quixadá

Page 1: Apresentação Java Web Si Ufc Quixadá

JAVAWEBIntrodução a Java volta para web!

Zarathon Maia – [email protected]

Page 2: Apresentação Java Web Si Ufc Quixadá

CRIANDO O BANCO E A TABELA A SEREM UTILIZADA NO PROGRAMA

• Criando o Banco de Dados:No prompt do MySQL:

CREATE DATABASE nomedobanco <enter>\g <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>

Page 3: Apresentação Java Web Si Ufc Quixadá

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("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://servidor:porta/bancodedados"; return DriverManager.getConnection(url, "root", “senha"); } catch (ClassNotFoundException e) { throw new SQLException(e.getMessage()); } }}

Page 4: Apresentação Java Web Si Ufc Quixadá

TESTE DO CONECTORimport 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("Você está conectado!"); } catch (SQLException sQLException) { System.out.println("Ocorreu um erro!"); } }}

Page 5: Apresentação Java Web Si Ufc Quixadá

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; }}

Page 6: Apresentação Java Web Si Ufc Quixadá

INSERINDO O NOSSO PRIMEIRO CONTATO

public class JDBCInsere {public static void main(String[] args) {try {// conectandoConnection con = Conector.getConnection();// cria um preparedStatementPreparedStatement stmt = con.prepareStatement("insert into contatos (nome,email,endereco) values (?,?,?)");// preenche os valoresstmt.setString(1, “Raimundinho”);stmt.setString(2, “[email protected]”);stmt.setString(3, “R. Vergueiro 3185 cj57”);// executastmt.execute();stmt.close();System.out.println("Gravado!");con.close();} catch (SQLException e) {e.printStackTrace();}}}

Page 7: Apresentação Java Web Si Ufc Quixadá

DAO – DATA ACCESS OBJECTEsta idéia, inocente a primeira vista, é capaz de isolar todo o acesso a banco em classesbem 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 dadosprivate Connection connection;public ContatoDAO() throws SQLException {this.connection = ConnectionFactory.getConnection();}

public void adiciona(Contato contato) throws SQLException {// prepared statement para inserçãoPreparedStatement stmt = this.connection.prepareStatement("insert intocontatos (nome,email,endereco) values (?, ?, ?)");// seta os valoresstmt.setString(1,contato.getNome());stmt.setString(2,contato.getEmail());stmt.setString(3,contato.getEndereco());// executastmt.execute();stmt.close();}}

Page 8: Apresentação Java Web Si Ufc Quixadá

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><%}%>

Page 9: Apresentação Java Web Si Ufc Quixadá

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.

Page 10: Apresentação Java Web Si Ufc Quixadá

JSP – JAVA SERVER PAGESEXPRESSION 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="contato“ class="br.com.caelum.jdbc.modelo.Contato"/>

Page 11: Apresentação Java Web Si Ufc Quixadá

JSTL - BIBLIOTECA DE TAGSA 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="http://java.sun.com/jsp/jstl/core" prefix="c" %>

Page 12: Apresentação Java Web Si Ufc Quixadá

JSTL - BIBLIOTECA DE TAGSC:OUTA partir deste momento, temos a variável dao no chamado escopo de página, esse é oescopo 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="${dao.lista[0].nome}"/>

C:FOREACHA 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="contato" items="${dao.lista}"><li>${contato.nome}, ${contato.email}: ${contato.endereco}</li></c:forEach>“Mais elegante que o código que foi apresentado usando scriptletss, não?”

C:SETA 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="nome" value="${contato.nome}"/>

Page 13: Apresentação Java Web Si Ufc Quixadá

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.

Page 14: Apresentação Java Web Si Ufc Quixadá

JSTL - BIBLIOTECA DE TAGSA lista completa das tags da versão 1.1 da JSTL core pode ser facilmente compreendida:

c:catch bloco do tipo try/catchc:choose bloco do tipo switchc:forEach forc:forTokens for em tokens (ex: “a,b,c” separados por vírgula)c:if ifc:import importc:otherwise default do switchc:out saídac:param parâmetroc:redirect redirecionamentoc:remove remoção de variávelc:set criação de variávelc:url link para outra paginac:when teste para o switch

Page 15: Apresentação Java Web Si Ufc Quixadá

JSTL - BIBLIOTECA DE TAGSC:IMPORTUma 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="outrapagina.jsp"/>

C:URLAs 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”/>

Page 16: Apresentação Java Web Si Ufc Quixadá

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.

Page 17: Apresentação Java Web Si Ufc Quixadá

SERVLETS

REQUEST DISPATCHERPoderí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.

Page 18: Apresentação Java Web Si Ufc Quixadá

BIBLIOGRAFIAwww.caelum.com.br – apostila FJ21www.guj.com.brwww.javafree.org

Page 19: Apresentação Java Web Si Ufc Quixadá

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!