• Nenhum resultado encontrado

Laboratório PROGRAMAÇÃO WEB II: Prática 6

N/A
N/A
Protected

Academic year: 2019

Share "Laboratório PROGRAMAÇÃO WEB II: Prática 6"

Copied!
34
0
0

Texto

(1)

Laboratório PROGRAMAÇÃO WEB II: Prática 6

Ferramentas utilizadas:

NetBeans;

Desenvolvendo cadastrado de Usuário e conexão em Banco de Dados

Passo 1:

Crie um projeto um projeto Maven com nome sistFinanceiro.

-Acesse no NetBeans

Arquivo

Novo Projeto

Em Categorias selecione Maven

e em Projetos: Selecione Aplicação Web.

Clique em Próximo para continuar.

(2)

Clique em Próximo para continuar.

(3)

Após a criação do projeto vamos editar o conteúdo do arquivo pom.xml, ou

seja, definir as dependências do projeto no Maven.

Edite o arquivo pom.xml conforme código abaixo:

Dica apague o conteúdo do arquivo criado e cole o conteúdo abaixo.

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>br.com.pitagoras</groupId>

<artifactId>sistFinanceiro</artifactId>

<version>1.0-SNAPSHOT</version>

<packaging>war</packaging>

<name>sistFinanceiro</name>

<properties>

<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

<repositories>

<repository>

<id>jvnet-nexus-releases</id>

<name>jvnet-nexus-releases</name>

<url>https://maven.java.net/content/repositories/releases/</url>

</repository>

(4)

<dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency>

<!-- Java Server Faces -->

<dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.faces</artifactId> <version>2.2.10</version> </dependency>

<!-- Hibernate -->

<dependency>

<groupId>org.hibernate</groupId>

<artifactId>hibernate-core</artifactId>

<version>4.3.4.Final</version>

</dependency>

<!-- MySQL -->

(5)
(6)

<groupId>javax</groupId>

<artifactId>javaee-endorsed-api</artifactId>

<version>7.0</version>

<type>jar</type>

</artifactItem>

</artifactItems>

</configuration>

</execution>

</executions>

</plugin>

</plugins>

</build>

</project>

Passo 2:

Vamos adicionar o Frameworks JavaServer Faces ao nosso projeto.

Selecione o projeto sistFinanceiro e com o botão direito do mouse e selecione

Propriedades.

(7)

Clique em JavaServer Faces e clique em OK.

(8)

Na aba Configurações e em Padrão de URL do Servlet JSF, apague o conteúdo e

preencha com *.jsf.

Clique em OK para concluir.

Veja que houve uma modificação na estrutura do projeto

(9)

Passo 3:

Agora iremos criar inicialmente 3 pacotes já na Pasta Pacotes de

Códigos Fontes. Conforme figura abaixo:

Para isso selecione Pacotes de Códigos-fontes e com o botão direito do mouse

selecione

Novo

Pacote Java.

Após criar os 3 pacotes vamos criar 3 classes Java.

Passo 4:

Agora iremos criar as classes DAOException, RNExpection e

UtilException no pacote

br.pitagoras.sistFinanceiro.util

, o objetivo é criar

classes que irão lidar com as exceções de nossa aplicação e centralizar em um

único local esse tratamento de exceções.

Para isso selecione Pacotes de Códigos-fontes e com o botão direito do mouse

selecione

Novo

Classe Java.

Código: DAOException.java

package br.com.pitagoras.sistfinanceiro.util;

public class DAOException extends Exception {

public DAOException() {

// TODO Auto-generated constructor stub

}

public DAOException(String message) {

super(message);

// TODO Auto-generated constructor stub

}

public DAOException(Throwable cause) {

super(cause);

(10)

}

public DAOException(String message, Throwable cause) {

super(message, cause);

// TODO Auto-generated constructor stub

}

public DAOException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {

super(message, cause, enableSuppression, writableStackTrace);

// TODO Auto-generated constructor stub

}

}

Código: RNException.java

package br.com.pitagoras.sistfinanceiro.util;

public class RNException extends Exception {

public RNException() {

// TODO Auto-generated constructor stub

}

public RNException(String message) {

super(message);

// TODO Auto-generated constructor stub

}

public RNException(Throwable cause) {

super(cause);

// TODO Auto-generated constructor stub

(11)

public RNException(String message, Throwable cause) {

super(message, cause);

// TODO Auto-generated constructor stub

}

public RNException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {

super(message, cause, enableSuppression, writableStackTrace);

// TODO Auto-generated constructor stub

}

}

Código: UtilException.java

package br.com.pitagoras.sistfinanceiro.util;

public class UtilException extends Exception {

public UtilException() {

// TODO Auto-generated constructor stub

}

public UtilException(String arg0) {

super(arg0);

// TODO Auto-generated constructor stub

}

public UtilException(Throwable arg0) {

super(arg0);

// TODO Auto-generated constructor stub

(12)

public UtilException(String arg0, Throwable arg1) {

super(arg0, arg1);

// TODO Auto-generated constructor stub

}

public UtilException(String arg0, Throwable arg1, boolean arg2, boolean arg3) {

super(arg0, arg1, arg2, arg3);

// TODO Auto-generated constructor stub

}

}

Passo 5: Vamos criar nosso banco de dados. Iremos utilizar o MySQL como nosso gerenciador de banco de dados.

Acesse o Workbench de sua máquina ou qualquer forma de conexão com o MySQL e crie um banco de dado com o nome sistFinanceiro.

Dica: Create database sistFinanceiro;

Passo 6: Agora iremos criar a classe Usuario.java, iremos criar também uma interface UsuarioDAO.java e a classe UsuarioDAOHibernate.java

Na classe usuário iremos realizar o nosso mapeamento para o Hibernate lidar com o MySQL. Para isso usaremos as Annotations Obrigatórian @Entity e indicar qual é o campo-chave e autonumerado na tabela por meio das annotations @Id e

@GeneratedValue.

Iremos criar na classe

br.pitagoras.sistFinanceiro.usuario

as classes

Usuario.java, UsuarioDAO.java e a classe UsuarioDAOHibernate.java

Código: Usuario.java

OBS: Ao criar essa classe o sistema irá da um alerta para criar a unidade de persistência. Não se apavore, iremos cria-lo, daqui a pouco.

package br.com.pitagoras.sistfinanceiro.usuario;

import java.io.Serializable;

import java.util.Date;

(13)

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

@Entity

public class Usuario implements Serializable {

@Id

@GeneratedValue

private Integer codigo;

private String nome;

private String email;

@org.hibernate.annotations.NaturalId

private String login;

private String senha;

private Date nascimento;

private String celular;

private String idioma;

private boolean ativo;

public Integer getCodigo() {

return codigo;

}

public void setCodigo(Integer codigo) {

this.codigo = codigo;

}

public String getNome() {

return nome;

}

public void setNome(String nome) {

this.nome = nome;

(14)

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getLogin() {

return login;

}

public void setLogin(String login) {

this.login = login;

}

public String getSenha() {

return senha;

}

public void setSenha(String senha) {

this.senha = senha;

}

public Date getNascimento() {

return nascimento;

}

public void setNascimento(Date nascimento) {

this.nascimento = nascimento;

(15)

public String getCelular() {

return celular;

}

public void setCelular(String celular) {

this.celular = celular;

}

public String getIdioma() {

return idioma;

}

public void setIdioma(String idioma) {

this.idioma = idioma;

}

public boolean isAtivo() {

return ativo;

}

public void setAtivo(boolean ativo) {

this.ativo = ativo;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + (ativo ? 1231 : 1237);

result = prime * result + ((celular == null) ? 0 : celular.hashCode());

result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());

result = prime * result + ((email == null) ? 0 : email.hashCode());

(16)

result = prime * result + ((login == null) ? 0 : login.hashCode());

result = prime * result + ((nascimento == null) ? 0 : nascimento.hashCode());

result = prime * result + ((nome == null) ? 0 : nome.hashCode());

result = prime * result + ((senha == null) ? 0 : senha.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Usuario other = (Usuario) obj;

if (ativo != other.ativo)

return false;

if (celular == null) {

if (other.celular != null)

return false;

} else if (!celular.equals(other.celular))

return false;

if (codigo == null) {

if (other.codigo != null)

return false;

} else if (!codigo.equals(other.codigo))

return false;

if (email == null) {

if (other.email != null)

return false;

(17)

return false;

if (idioma == null) {

if (other.idioma != null)

return false;

} else if (!idioma.equals(other.idioma))

return false;

if (login == null) {

if (other.login != null)

return false;

} else if (!login.equals(other.login))

return false;

if (nascimento == null) {

if (other.nascimento != null)

return false;

} else if (!nascimento.equals(other.nascimento))

return false;

if (nome == null) {

if (other.nome != null)

return false;

} else if (!nome.equals(other.nome))

return false;

if (senha == null) {

if (other.senha != null)

return false;

} else if (!senha.equals(other.senha))

return false;

return true;

}

}

Agora iremos criar uma interface a interface UsuarioDAO.java, o processo de

(18)

verdade iremos criar uma classe e editar o código interno para ela funcionar

como interface.

Código: UsuarioDAO.java

package br.com.pitagoras.sistfinanceiro.usuario;

import java.util.List;

public interface UsuarioDAO {

public void salvar(Usuario usuario);

public void atualizar(Usuario usuario);

public void excluir(Usuario usuario);

public Usuario carregar(Integer codigo);

public Usuario buscarPorLogin(String login);

public List<Usuario> listar();

}

Agora iremos criar a classe UsuarioDAOHibernate.java, essa classe deverá

implementar a interface UsuarioDAO.

Código: UsuarioDAOHibernate.java

package br.com.pitagoras.sistfinanceiro.usuario;

import java.util.List;

import org.hibernate.Query;

import org.hibernate.Session;

public class UsuarioDAOHibernate implements UsuarioDAO {

(19)

public void setSession(Session session) {

this.session = session;

}

public void salvar(Usuario usuario) {

this.session.save(usuario);

}

public void atualizar(Usuario usuario) {

this.session.update(usuario);

}

public void excluir(Usuario usuario) {

this.session.delete(usuario);

}

public Usuario carregar(Integer codigo) {

return (Usuario) this.session.get(Usuario.class, codigo);

}

public List<Usuario> listar() {

return this.session.createCriteria(Usuario.class).list();

}

public Usuario buscarPorLogin(String login) {

String hql = "select u from Usuario u where u.login = :login";

Query consulta = this.session.createQuery(hql);

consulta.setString("login", login);

return (Usuario) consulta.uniqueResult();

}

(20)

Passo 7:

Agora iremos voltar ao pacote

br.com.pitagoras.sistfinanceiro.util e

criar duas novas classes.

- HibernateUtil.java

- DAOFactory.java

Código: HibernateUtil.java

package br.com.pitagoras.sistfinanceiro.util;

import org.hibernate.boot.registry.StandardServiceRegistry;

import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

import org.hibernate.cfg.Configuration;

import org.hibernate.SessionFactory;

public class HibernateUtil {

private static final SessionFactory sessionFactory = buildSessionFactory();

private static SessionFactory buildSessionFactory() {

try {

Configuration cfg = new Configuration();

cfg.configure("hibernate.cfg.xml");

StandardServiceRegistryBuilder registradorServico = new StandardServiceRegistryBuilder();

registradorServico.applySettings(cfg.getProperties());

StandardServiceRegistry servico = registradorServico.build();

return cfg.buildSessionFactory(servico);

} catch (Throwable e) {

System.out.println("Criação inicial do objeto SessionFactory falhou. Erro: " + e);

throw new ExceptionInInitializerError(e);

}

(21)

public static SessionFactory getSessionFactory() {

return sessionFactory;

}

}

Agora iremos criar a Classe DAOFactory, como próprio nome diz essa classe

tem a intenção de ser um construtor de DAOs. Ela deverá ser o único ponto no

sistema onde as classes DAO são instanciadas.

Código: DAOFactory.java

package br.com.pitagoras.sistfinanceiro.util;

import br.com.pitagoras.sistfinanceiro.usuario.*;

public class DAOFactory {

public static UsuarioDAO criarUsuarioDAO() {

UsuarioDAOHibernate usuarioDAO = new UsuarioDAOHibernate();

usuarioDAO.setSession(HibernateUtil.getSessionFactory().getCurrentSession());

return usuarioDAO;

}

}

Passo 8:

Agora nosso controle que irá lidar com as requisições de nossa viu.

Logo no pacote br.com.pitagoras.web iremos criar nossa classe bean,

UsuarioBean.java

Código: UsuárioBean.java

(22)

import javax.faces.application.FacesMessage;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.RequestScoped;

import javax.faces.context.FacesContext;

import br.com.pitagoras.sistfinanceiro.usuario.Usuario;

import br.com.pitagoras.sistfinanceiro.usuario.UsuarioRN;

@ManagedBean(name = "usuarioBean")

@RequestScoped

public class UsuarioBean {

private Usuario usuario = new Usuario();

private String confirmarSenha;

public String novo() {

this.usuario = new Usuario();

this.usuario.setAtivo(true);

return "/publico/usuario";

}

public String salvar() {

FacesContext context = FacesContext.getCurrentInstance();

String senha = this.usuario.getSenha();

if (!senha.equals(this.confirmarSenha)) {

FacesMessage facesMessage = new FacesMessage("A senha não foi confirmada corretamente");

context.addMessage(null, facesMessage);

return null;

}

UsuarioRN usuarioRN = new UsuarioRN();

(23)

return "usuariosucesso";

}

public Usuario getUsuario() {

return usuario;

}

public void setUsuario(Usuario usuario) {

this.usuario = usuario;

}

public String getConfirmarSenha() {

return confirmarSenha;

}

public void setConfirmarSenha(String confirmarSenha) {

this.confirmarSenha = confirmarSenha;

}

}

Observe que nessa classe estamos importando a Classe UsuarioRN.java que ainda não criamos. Não se preocupe em breve criaremos essa classe.

Passo 9:

Agora iremos criar a infraestrutura para a conexão ao banco de dados

e para isso iremos criar um novo pacote com o nome

br.com.pitagoras.web.filter

, e nesse pacote iremos criar a classe

ConexaoHibernateFilter.java

Código: ConexaoHibernateFilter.java

(24)

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.annotation.WebFilter;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import br.com.pitagoras.sistfinanceiro.util.HibernateUtil;

@WebFilter(urlPatterns = { "*.jsf" })

public class ConexaoHibernateFilter implements Filter {

private SessionFactory sf;

public void init(FilterConfig config) throws ServletException {

this.sf = HibernateUtil.getSessionFactory();

}

public void doFilter(ServletRequest servletRequest, ServletResponse

servletResponse, FilterChain chain)

(25)

Session currentSession = this.sf.getCurrentSession();

Transaction transaction = null;

try {

transaction = currentSession.beginTransaction();

chain.doFilter(servletRequest, servletResponse);

transaction.commit();

if (currentSession.isOpen()) {

currentSession.close();

}

} catch (Throwable ex) {

try {

if (transaction.isActive()) {

transaction.rollback();

}

} catch (Throwable t) {

t.printStackTrace();

}

throw new ServletException(ex);

}

}

public void destroy() {

}

(26)

Passo 10:

Agora iremos configurar o Hibernate.

Na pasta Outros Códigos-fonte/src/resources, iremos criar o seguinte arquivo

hibernate.cfg.xml, nesse arquivos iremos informar os dados de conexão e com

qual banco de dados iremos trabalhar.

Código: hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<property

name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

<property

name="connection.driver_class">com.mysql.jdbc.Driver</property>

<property

name="connection.url">jdbc:mysql://localhost:3306/sistfinanceiro</property>

<property name="connection.username">root</property>

<property name="connection.password">quimica7295</property>

<property name="current_session_context_class">thread</property>

<property name="hibernate.hbm2ddl.auto">update</property>

<mapping class="br.com.pitagoras.sistfinanceiro.usuario.Usuario" />

</session-factory>

(27)

Lembre-se de alterar o nome do usuário e senha referente a sua conexão de

banco de dados.

Passo 11:

Agora iremos criar uma classe que conterá nossa regra de negócio

para o usuário e faz parte da camada que poderá se comunicar com o banco de

dados.

Essa classe será criada no pacote

br.com.pitagoras.sistfinanceiro.usuario

.

Código: UsuarioRN.java

package br.com.pitagoras.sistfinanceiro.usuario;

import java.util.List;

import br.com.pitagoras.sistfinanceiro.util.DAOFactory;

public class UsuarioRN {

private UsuarioDAO usuarioDAO;

public UsuarioRN() {

this.usuarioDAO = DAOFactory.criarUsuarioDAO();

}

public Usuario carregar(Integer codigo) {

return this.usuarioDAO.carregar(codigo);

}

public Usuario buscarPorLogin(String login) {

return this.usuarioDAO.buscarPorLogin(login);

(28)

public void salvar(Usuario usuario) {

Integer codigo = usuario.getCodigo();

if (codigo == null || codigo == 0) {

this.usuarioDAO.salvar(usuario);

} else {

this.usuarioDAO.atualizar(usuario);

}

}

public void excluir(Usuario usuario) {

this.usuarioDAO.excluir(usuario);

}

public List<Usuario> listar() {

return this.usuarioDAO.listar();

}

}

Passo 11: Agora iremos criar nossas views. Na pasta Paginas Web, vamos criar

a pasta publico e nesta pasta iremos criar as seguintes páginas:

- usuário.xhtml;

-usuariosucesso.xhtml;

Código: usuario.xhtml

<?xml version="1.0" encoding="UTF-8"?>

(29)

xmlns:h="http://xmlns.jcp.org/jsf/html"

xmlns:f="http://xmlns.jcp.org/jsf/core">

<h:head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Cadastro de Usuários</title>

</h:head>

<h:body>

<h1>Cadastro de Usuários</h1>

<h:form id="cadastro">

<h:messages />

<h:inputHidden value="#{usuarioBean.usuario.codigo}" />

<h:inputHidden value="#{usuarioBean.usuario.ativo}" />

<h:panelGrid columns="2">

<h:outputLabel value="Nome:" for="nome" />

<h:inputText id="nome" label="Nome"

value="#{usuarioBean.usuario.nome}" size="30" maxlength="30"

required="true" requiredMessage="Você não tem nome?">

<f:validateLength minimum="10" maximum="30" />

</h:inputText>

<h:outputLabel value="Data Nascimento:" for="data" />

<h:inputText id="data" label="Data Nascimento"

value="#{usuarioBean.usuario.nascimento}" size="10" maxlength="10"

required="true">

<f:convertDateTime dateStyle="medium" />

</h:inputText>

<h:outputLabel value="Celular:" for="celular" />

<h:inputText id="celular" label="Celular"

(30)

<h:outputLabel value="e-Mail:" for="email" />

<h:panelGroup>

<h:inputText id="email" label="e-Mail"

value="#{usuarioBean.usuario.email}" size="50" maxlength="50"

required="true" validatorMessage="e-mail inválido">

<f:validateRegex pattern="[a-zA-Z0-9\-\_\.]+@[a-zA-Z0-9\-\_\.]+" />

</h:inputText>

<h:message for="email" />

</h:panelGroup>

<h:outputLabel value="Idioma:" for="idioma" />

<h:selectOneMenu id="idioma" value="#{usuarioBean.usuario.idioma}">

<f:selectItem itemValue="pt_BR" itemLabel="Português" />

<f:selectItem itemValue="en_US" itemLabel="English" />

<f:selectItem itemValue="es_ES" itemLabel="Espanol" />

</h:selectOneMenu>

<h:outputLabel value="Login:" for="login" />

<h:inputText id="login" label="Login"

value="#{usuarioBean.usuario.login}" size="15" maxlength="15"

required="true"

validatorMessage="Login deve ter no mínimo 5 e no máximo 15 caracteres e só pode ter os símbolos '.' e '_'.">

<f:validateRegex pattern="([a-z]|[0-9]|[.]|[_]){5,15}" />

</h:inputText>

<h:outputLabel value="Senha:" for="senha" />

<h:inputSecret id="senha" label="Senha"

(31)

required="true" redisplay="true" />

<h:outputLabel value="Confirmar Senha:" for="confirmarsenha" />

<h:inputSecret id="confirmarsenha" label="Confirmar Senha"

value="#{usuarioBean.confirmarSenha}" size="10" maxlength="10"

required="true" redisplay="true" />

</h:panelGrid>

<h:commandButton action="#{usuarioBean.salvar}" value="Salvar" />

</h:form>

</h:body>

</html>

Código: usuariosucesso.xhtml

<?xml version="1.0" encoding="UTF-8"?>

<html xmlns="http://www.w3.org/1999/xhtml"

xmlns:h="http://xmlns.jcp.org/jsf/html">

<h:head>

<title>Cadastro de Usuários</title>

</h:head>

<h:body>

<h1>

<h:outputText value="#{usuarioBean.usuario.nome}" />

, seja Bem-vindo

</h1>

Seu cadastro foi efetuado com sucesso.

<br />

Clique <a href="login.jsf">aqui</a> para efetuar o login.

(32)

</html>

Agora vamos editar a nossa página index.xhtml existe na pasta Paginas web.

Código: index.xhtml

<?xml version="1.0" encoding="UTF-8"?>

<html xmlns="http://www.w3.org/1999/xhtml"

xmlns:h="http://xmlns.jcp.org/jsf/html"

xmlns:f="http://xmlns.jcp.org/jsf/core">

<h:head>

<title>Financeiro</title>

</h:head>

<h:body>

<h1>Financeiro</h1>

<h:form>

<h:commandLink action="#{usuarioBean.novo}">Novo usuário</h:commandLink>

</h:form>

</h:body>

</html>

Pronto! Salve os do projeto e execute!

(33)

Preencha com dados de sua preferência e clique em salvar para testar a aplicação.

Se você verificar no banco de dados vai perceber que o Hibernate criou a tabela usuário no banco de dados sistFinanceiro.

(34)

Referências

Documentos relacionados

combinada com a lente macro de 90 mm e com um macro filtro da Sony, e as imagens incrivelmente detalhadas permitem identificar os seres rastejantes mais comuns, com os quais

(DUNI) Encontro das Jovens Águais - por localidade 8ª Academia dos Sucessores Ikeda 2030 da CGESP (representantes) - CCCamp. Dia dos

Podem treinar tropas (fornecidas pelo cliente) ou levá-las para combate. Geralmente, organizam-se de forma ad-hoc, que respondem a solicitações de Estados; 2)

do valor da inscrição, após conclusão do preenchimento do Formulário de Inscrição via Internet, em qualquer banco do sistema de compensação bancária. 5.2 O pagamento

feira dos electrodomésticos Compre agora e comece a pagar a 30 de Setembro ou pague até 12 meses sem

4 O Curso Especializado para condutores de veículos de transporte de carga indivisível e outras, objeto de regulamentação específica do CONTRAN ministrado pelo SEST

This study demonstrated that in patients submitted to surgical procedures with posterolateral arthrodesis, using pedicle screws for the treatment of degenerative disease of

Os resultados das análises destas amostras mostraram que a associação de alterações do LCR com quadro inflamatório e RIFI-IgM positiva ocorreu em 88% dos pacientes, que o