Você está na página 1de 31

COTI Informtica Java WebDeveloper sbado 13:00 Aula 19 27/out/2012

Continuao do projeto anterior. V para a pgina 20.

No Eclipse, configurar o Apache Tomcat 6.

File / new / project / dynamic web project projeto

Criar os pacotes config, entity, manager e persistence.

Adicionar ao projeto (WEB-INF/lib) as libs do Hibernate e as do JSF.

persistence / new / other / SQL file script

DROP DATABASE IF EXISTS aula; CREATE DATABASE aula; USE aula;

Verificar se o servio do MySQL est iniciado. Iniciar / executar services.msc

Colar o script no MySQL.

entity / new class Aluno


package entity; public class Aluno implements Comparable<Aluno> { private private private private Integer matricula; String nome; String turma; String sexo;

public Aluno() { } public Aluno(Integer matricula, String nome, String turma, String sexo) { this.matricula = matricula; this.nome = nome; this.turma = turma; this.sexo = sexo; } @Override public String toString() { return matricula + ", " + nome + ", " + turma + ", " + } public Integer getMatricula() { return matricula; } public void setMatricula(Integer matricula) { this.matricula = matricula;

sexo;

} public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getTurma() { return turma; } public void setTurma(String turma) { this.turma = turma; } public String getSexo() { return sexo; } public void setSexo(String sexo) { this.sexo = sexo; } @Override public int hashCode() { // // // // // false) } if (this.matricula == null) { return 0; } else { return this.matricula; }

// ternrio - (condio) ? (comando se true) : (comando se return this.matricula == null ? 0 : this.matricula;

@Override public boolean equals(Object obj) { Aluno a = (Aluno) obj; return this.matricula.equals(a.getMatricula()); } @Override public int compareTo(Aluno o) { return this.matricula.compareTo(o.getMatricula()); } // s para testar public static void main(String[] args) { Aluno a = new Aluno(); System.out.println(a.hashCode()); // zero a = new Aluno(123, "Carminha", "lixo", "vrias vezes por semana"); System.out.println(a.hashCode()); // 123 Aluno a2 = new Aluno(); a2.setMatricula(123);

System.out.println(a.equals(a2)); // true System.out.println("Comparando iguais: " + a.compareTo(a2)); // zero a2.setMatricula(789); System.out.println(a.equals(a2)); // false System.out.println("Comparando a < a2: " + a.compareTo(a2)); // -1 a2.setMatricula(21); System.out.println("Comparando a > a2: " + a.compareTo(a2)); // 1 } }

entity / new class Curso


package entity; public class Curso { private Integer idCurso; private String nomeCurso; public Curso() { } public Curso(Integer idCurso, String nomeCurso) { this.idCurso = idCurso; this.nomeCurso = nomeCurso; } @Override public String toString() { return idCurso + ", " + nomeCurso; } public Integer getIdCurso() { return idCurso; } public void setIdCurso(Integer idCurso) { this.idCurso = idCurso; } public String getNomeCurso() { return nomeCurso; }

public void setNomeCurso(String nomeCurso) { this.nomeCurso = nomeCurso; } }

Aluno:
package entity; import import import import import import import javax.persistence.Column; javax.persistence.Entity; javax.persistence.GeneratedValue; javax.persistence.GenerationType; javax.persistence.Id; javax.persistence.JoinColumn; javax.persistence.ManyToOne;

@Entity public class Aluno implements Comparable<Aluno> { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column private Integer matricula; @Column(length = 35) private String nome; @Column(length = 10) private String turma; @Column(columnDefinition = "enum('M', 'F', 'I')") private String sexo; // Aluno TEM-UM Curso // Mapeamento da cardinalidade - da classe para o atributo @ManyToOne @JoinColumn(name = "id_curso") private Curso curso; public Aluno() { } public Aluno(Integer matricula, String nome, String turma, String sexo) { this.matricula = matricula; this.nome = nome;

this.turma = turma; this.sexo = sexo;

@Override public String toString() { return matricula + ", " + nome + ", " + turma + ", " + sexo; } public Integer getMatricula() { return matricula; } public void setMatricula(Integer matricula) { this.matricula = matricula; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getTurma() { return turma; } public void setTurma(String turma) { this.turma = turma; } public String getSexo() { return sexo; } public void setSexo(String sexo) { this.sexo = sexo; } public Curso getCurso() { return curso; } public void setCurso(Curso curso) { this.curso = curso; } @Override public int hashCode() { // // // // // false) if (this.matricula == null) { return 0; } else { return this.matricula; }

// ternrio - (condio) ? (comando se true) : (comando se

return this.matricula == null ? 0 : this.matricula; } @Override public boolean equals(Object obj) { Aluno a = (Aluno) obj; return this.matricula.equals(a.getMatricula()); } @Override public int compareTo(Aluno o) { return this.matricula.compareTo(o.getMatricula()); } // s para testar public static void main(String[] args) { Aluno a = new Aluno(); System.out.println(a.hashCode()); // zero a = new Aluno(123, "Carminha", "lixo", "vrias vezes por semana"); System.out.println(a.hashCode()); // 123 Aluno a2 = new Aluno(); a2.setMatricula(123); System.out.println(a.equals(a2)); // true System.out.println("Comparando iguais: " + a.compareTo(a2)); // zero a2.setMatricula(789); System.out.println(a.equals(a2)); // false System.out.println("Comparando a < a2: " + a.compareTo(a2)); // -1 a2.setMatricula(21); System.out.println("Comparando a > a2: " + a.compareTo(a2)); // 1 } }

Curso:
package entity; import java.util.List; import import import import javax.persistence.Column; javax.persistence.Entity; javax.persistence.GeneratedValue; javax.persistence.GenerationType;

import javax.persistence.Id; import javax.persistence.OneToMany; @Entity public class Curso { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column private Integer idCurso; @Column(length = 15) private String nomeCurso; // Curso TEM-MUITOS Alunos @OneToMany(mappedBy = "curso") private List<Aluno> alunos; public Curso() { } public Curso(Integer idCurso, String nomeCurso) { this.idCurso = idCurso; this.nomeCurso = nomeCurso; } @Override public String toString() { return idCurso + ", " + nomeCurso; } public Integer getIdCurso() { return idCurso; } public void setIdCurso(Integer idCurso) { this.idCurso = idCurso; } public String getNomeCurso() { return nomeCurso; } public void setNomeCurso(String nomeCurso) { this.nomeCurso = nomeCurso; } public List<Aluno> getAlunos() { return alunos; } public void setAlunos(List<Aluno> alunos) { this.alunos = alunos; } }

Copiar para o pacote config o arquivo mysql_hibernate.cfg.xml


<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</proper ty> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/aula</prop erty> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">coti</property> <property name="hibernate.format_sql">true</property> <mapping class="entity.Aluno" /> <mapping class="entity.Curso" /> </session-factory> </hibernate-configuration>

config / new class Main


package config; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class Main { public static void main(String[] args) { Configuration cfg; cfg = new AnnotationConfiguration();

} }

cfg.configure("config/mysql_hibernate.cfg.xml"); new SchemaExport(cfg).create(true, true);

Executar a classe Main como Java Application:


log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version). log4j:WARN Please initialize the log4j system properly. alter table Aluno drop foreign key FK3C6D4CBD7051B29 drop table if exists Aluno drop table if exists Curso create table Aluno ( matricula integer not null auto_increment, nome varchar(35), sexo enum('M', 'F', 'I'), turma varchar(10), id_curso integer, primary key (matricula) ) create table Curso ( idCurso integer not null auto_increment, nomeCurso varchar(15), primary key (idCurso) ) alter table Aluno add index FK3C6D4CBD7051B29 (id_curso), add constraint FK3C6D4CBD7051B29 foreign key (id_curso) references Curso (idCurso)

Depois de rodar a classe Main... script:

DESC aluno; DESC curso; INSERT INTO curso (nomeCurso) VALUES ('Java'), ('Oracle'), ('Java Games'), ('Struts Advanced'), ('JSF Advanced'); SELECT * FROM curso;

Copiar para o pacote persistence o arquivo HibernateUtil.java


package persistence; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.SessionFactory; public class HibernateUtil { private static final SessionFactory sessionFactory; static {

try { sessionFactory = new AnnotationConfiguration().configure( "config/mysql_hibernate.cfg.xml").buildSe ssionFactory(); } catch (Throwable ex) { System.err.println("Initial SessionFactory creation failed." + ex); } } throw new ExceptionInInitializerError(ex);

public static SessionFactory getSessionFactory() { return sessionFactory; } }

persistence / new class CursoDao


package persistence; import java.util.ArrayList; import java.util.List; import import import import import org.hibernate.Criteria; org.hibernate.Query; org.hibernate.Session; org.hibernate.Transaction; org.hibernate.criterion.Order;

import entity.Curso; public class CursoDao { Session session; Transaction transaction; Query query; Criteria criteria; @SuppressWarnings("unchecked") public List<Curso> findAll() throws Exception { List<Curso> lista = new ArrayList<Curso>(); session = HibernateUtil.getSessionFactory().openSession(); criteria = session.createCriteria(Curso.class); criteria = criteria.addOrder(Order.asc("nomeCurso")); lista = criteria.list(); session.close(); return lista; } }

persistence / new class AlunoDao


package persistence; import java.util.ArrayList; import java.util.List; import import import import org.hibernate.Criteria; org.hibernate.Query; org.hibernate.Session; org.hibernate.Transaction;

import entity.Aluno; public class AlunoDao { Session session; Transaction transaction; Query query; Criteria criteria; public void create(Aluno a) throws Exception { session = HibernateUtil.getSessionFactory().openSession(); transaction = session.beginTransaction(); session.save(a); transaction.commit(); session.close(); } @SuppressWarnings("unchecked") public List<Aluno> findAll() throws Exception { List<Aluno> lista = new ArrayList<Aluno>(); session = HibernateUtil.getSessionFactory().openSession(); query = session.createQuery("from Aluno"); lista = query.list(); session.close(); return lista; }

manager / new class ManagedBean


package manager;

import java.util.ArrayList; import java.util.List; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.faces.model.SelectItem; import persistence.AlunoDao; import persistence.CursoDao; import entity.Aluno; import entity.Curso; public class ManagedBean { private Aluno aluno; private List<SelectItem> listaCurso; private List<Aluno> listaAlunos; public ManagedBean() { aluno = new Aluno(); aluno.setCurso(new Curso()); } public Aluno getAluno() { return aluno; } public void setAluno(Aluno aluno) { this.aluno = aluno; } public List<SelectItem> getListaCurso() { try { listaCurso = new ArrayList<SelectItem>(); for (Curso c : new CursoDao().findAll()) { listaCurso .add(new SelectItem(c.getIdCurso(), c.getNomeCurso())); } } catch (Exception e) { e.printStackTrace(); } return listaCurso; } public void setListaCurso(List<SelectItem> listaCurso) { this.listaCurso = listaCurso; } public List<Aluno> getListaAlunos() { listaAlunos = new ArrayList<Aluno>(); try { for (Aluno a : new AlunoDao().findAll()) { listaAlunos.add(a); } } catch (Exception e) { e.printStackTrace(); } return listaAlunos; }

public void setListaAlunos(List<Aluno> listaAlunos) { this.listaAlunos = listaAlunos; } public String cadastrar() { FacesContext fc = FacesContext.getCurrentInstance(); try { new AlunoDao().create(aluno); fc.addMessage("form1", new FacesMessage("Gravado com sucesso!")); aluno = new Aluno(); // "limpando" aluno } catch (Exception e) { fc.addMessage("form1", new FacesMessage("Erro: " + e.getMessage())); } return "cadastrar.jsf"; // recarregar a pgina "cadastrar.jsf" } }

continua!

Continuao: Copiar para a pasta WEB-INF os arquivos-fonte do JSF.

faces-config.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd"> <!-- =========== FULL CONFIGURATION FILE ================================== --> <faces-config> <managed-bean> <managed-bean-name>managedBean</managed-bean-name> <managed-bean-class>manager.ManagedBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> </faces-config>

WebContent / new JSP index


<% %> response.sendRedirect("cadastrar.jsf");

WebContent / new JSP cadastrar


<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %> <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Pgina de cadastro</title> </head> <body> <f:view> <h3> <h:outputText value="Formulrio de cadastro de aluno" /> </h3> <hr /> <h:form id="form1"> <h:panelGrid columns="3"> <h:outputText value="Nome:" /> <h:inputText id="nome" value="#{managedBean.aluno.nome}" /> <h:message for="nome" /> <h:outputText value="Turma:" /> <h:inputText id="turma" value="#{managedBean.aluno.turma}" /> <h:message for="turma" /> <h:outputText value="Sexo:" /> <h:selectOneRadio layout="pageDirection" id="sexo" value="#{managedBean.aluno.sexo}">

<f:selectItem itemValue="M" itemLabel="Masculino" /> <f:selectItem itemValue="F" itemLabel="Feminino" /> <f:selectItem itemValue="I" itemLabel="Indefinido" /> </h:selectOneRadio> <h:message for="sexo" /> <h:outputText value="Curso:" /> <h:selectOneMenu value="#{managedBean.aluno.curso.idCurso}"> <f:selectItems value="#{managedBean.listaCurso}" /> </h:selectOneMenu> </h:panelGrid> <h:commandButton value="Cadastrar Aluno" action="#{managedBean.cadastrar}" /> <br /> <h:message for="form1" /> </h:form>

<hr /> <h:dataTable value="#{managedBean.listaAlunos}" var="a"> <h:column> <f:facet name="header"> <h:outputText value="Matrcula" /> </f:facet> <h:outputText value="#{a.matricula}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Nome" /> </f:facet> <h:outputText value="#{a.nome}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Sexo" /> </f:facet> <h:outputText value="#{a.sexo}" /> </h:column> <h:column> <f:facet name="header">

<h:outputText value="Turma" /> </f:facet> <h:outputText value="#{a.turma}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Curso" /> </f:facet> <h:outputText value="#{a.curso.nomeCurso}" /> </h:column> </h:dataTable> </f:view> </body> </html>

File / new / Dynamic Web Project EnvioDeEmail

WebContent / new JSP index


<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-88591"> <title>Home</title> <style type="text/css"> body{ font-family: verdana; color: blue; background-color: #EAEAEA; } </style> </head> <body> <h3>Enviar E-mail</h3> <br /><hr /><br /> <form action="Controle" method="post"> Remetente:<br /> <input type="text" value="cotiinformatica1@gmail.com" readonly="readonly" size="30" /> <br /><br /> Destinatrio:<br /> <input type="text" name="destino" size="30" /> <br /><br /> Assunto:<br /> <input type="text" name="assunto" size="30" /> <br /><br /> Mensagem:<br /> <textarea name="msg" rows="5" cols="30"></textarea> <br /><br /> <input type="reset" value="Limpar campos" /> <input type="submit" value="Enviar dados" /> </form> <br /><br /> ${msg} </body> </html>

src / new packages control, entity, util

entity / new class EnvioEmail


package entity; public class EnvioEmail { private String destino; private String assunto; private String msg; public EnvioEmail() { } public EnvioEmail(String destino, String assunto, String msg) { this.destino = destino;

this.assunto = assunto; this.msg = msg;

public String getDestino() { return destino; } public void setDestino(String destino) { this.destino = destino; } public String getAssunto() { return assunto; } public void setAssunto(String assunto) { this.assunto = assunto; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }

Adicionar ao projeto as libs da pasta mail.

util / new class EmailUtil


package util; import org.apache.commons.mail.Email; import org.apache.commons.mail.SimpleEmail; import entity.EnvioEmail; public class EmailUtil { public static Email conexaoEmail() throws Exception { Email email = new SimpleEmail(); email.setHostName("smtp.gmail.com"); email.setSmtpPort(465); email.setAuthentication("cotiinformatica1@gmail.com", "aulaJava"); email.setTLS(true); email.setSSL(true); email.setFrom("cotiinformatica1@gmail.com", "Coti Informtica"); return email; } public static String enviarEmail(EnvioEmail ee) throws Exception { Email email = new SimpleEmail(); email = conexaoEmail(); email.setSubject(ee.getAssunto());

email.setMsg(ee.getMsg()); email.addTo(ee.getDestino()); email.send(); return "E-mail enviado."; } }

control / new Servlet Controle


package control; import import import import import javax.servlet.ServletException; java.io.IOException; javax.servlet.http.HttpServlet; javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse;

import util.EmailUtil; import entity.EnvioEmail; public class Controle extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String resp = null; try { EnvioEmail ee = new EnvioEmail(request.getParameter("destino"), request.getParameter("assunto"), request.getParameter("msg")); resp = EmailUtil.enviarEmail(ee); } catch (Exception e) { e.printStackTrace(); resp = "Erro: " + e.getMessage(); } finally { request.setAttribute("msg", resp); request.getRequestDispatcher("index.jsp") .forward(request, response); } } }

Presentes: Taryk Senador Dayvison Vercilo Zuck

Você também pode gostar