TADS:Desenvolvimento Web IV (2016-1)
PLANO DE ENSINO
IDENTIFICAÇÃO
Curso: Tecnologia em Análise e Desenvolvimento de Sistemas
Componente Curricular: Desenvolvimento Web IV
Professor: Estevan Braz Brandt Costa <estevan.costa@ifpr.edu.br>
Turma: 01/2014
Período Letivo: Quinto
Ano: 2016
Carga horária: 60
Horários de Aulas:
Horário Semanal de Atendimento ao Estudante:
EMENTA
Construção de web sites dinâmicos utilizando os principais frameworks javaEE; JavaServer faces; Spring MVC; Struts2; persistência de dados utilizando a Java persistence API; Hibernate; Java Enterprise Edition; Web Services.
CONTEÚDO PROGRAMÁTICO
OBJETIVOS DO COMPONENTE CURRICULAR
Apresentar conceitos e ferramentas para o desenvolvimento de aplicações web, na perspectiva de sistemas, utilizando a plataforma Java EE e os principais frameworks que implementam sua referência.
PROCEDIMENTOS METODOLÓGICOS
Metodologia de ensino
Recursos e materiais
AVALIAÇÃO
REFERÊNCIAS BIBLIOGRÁFICAS
Referências Básicas
- MACHACEK, Jan; VUKOTIC, Aleksa; CHAKRABORTY, Anyrvan; DITT, Jessica. Pro Spring 2.5. Ciência Moderna, 2009.
- GONÇALVES, Edson; Desenvolvendo Aplicações Web com JSP, Servlets JavaServer Faces, Hibernate, EJB 3 Persistence e AJAX . Ciência Moderna, 2007.
- LOPES, Camilo. Guia Prático Construindo Aplicações JEE com Frameworks - Exclusivo para iniciantes JSF, Spring Security, Hibernate, MySQL, Eclipse . Ciência Moderna, 2011.
- TERUEL, Evandro Carlos . Arquitetura de Sistemas para WEB com Java Utilizando Design Patterns e Frameworks. Ciência Moderna, 2012.
- GOMES, Yuri Marx P. Java na Web com Jsf, Spring, Hibernate e Netbeans. Ciencia Moderna, 2008.
Referências Complementares
- Monson-Haefel, Richard; Burke, Bill. Enterprise Javabeans 3.0. Pearson Education, 2007.
- GONÇALVES, Edson. Dominando Java Server Faces e Facelets Utilizando Spring 2.5, Hibernate e JPA. Ciência Moderna, 2008.
- VIANA, Marco Polo Monteiro. Sistemas Comerciais - Conceito, Modelagem e Projeto. Ciência Moderna, 2013.
- LUBBERS, Peter; ALBERS, Brian; SALIM , Frank . Programação Profissional em HTML 5. Altabooks, 2013.
- FLANAGAN, David. JavaScript: O Guia Definitivo. Bookman, 2013.
MATERIAIS DE APOIO
HISTÓRICO DE PROFESSORES
- TADS:Desenvolvimento Web IV 2016-1: Estevan Braz Brandt Costa <estevan.costa@ifpr.edu.br>
DIÁRIOS DE AULA
21/02/2017
@SequenceGenerator(name="aaa",sequenceName="usuario_id_seq",allocationSize=1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="aaa")
20/02/2017
Exemplo persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="aulateste" transaction-type="RESOURCE_LOCAL">
<class>modelo.Aula</class>
<properties>
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/aulateste"/>
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
<property name="hibernate.connection.username" value="login"/>
<property name="hibernate.connection.password" value="senha"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
</properties>
</persistence-unit>
</persistence>
Classe de Conexão
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class Conexao {
private static EntityManagerFactory emf;
public static EntityManager getEntityManager() {
if (emf == null){
emf = Persistence.createEntityManagerFactory("aulateste");
}
return emf.createEntityManager();
}
}
Exemplo DAO Genérico
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.PersistenceContext;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;
public class Dao<T extends Serializable> {
@PersistenceContext(unitName = "agenda")
private final EntityManager entityManager;
private final Class<T> persistentClass;
public Dao() {
this.entityManager = Conexao.getEntityManager();
this.persistentClass = (Class<T>) ((ParameterizedType)
getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
public EntityManager getEntityManager() {
return entityManager;
}
protected void save(T entity) {
EntityTransaction tx = getEntityManager().getTransaction();
try {
tx.begin();
getEntityManager().persist(entity);
tx.commit();
} catch (Throwable t) {
t.printStackTrace();
tx.rollback();
} finally {
close();
}
}
public T efetuarLogin(String login, String senha) {
Session session = (Session) getEntityManager().getDelegate();
return (T) session.createCriteria(persistentClass)
.add(Restrictions.eq("login", login).ignoreCase())
.add(Restrictions.eq("senha", senha).ignoreCase()).uniqueResult();
}
public T findById(int id) {
Session session = (Session) getEntityManager().getDelegate();
return (T) session.createCriteria(persistentClass)
.add(Restrictions.eq("id", id)).uniqueResult();
}
private void close() {
if (getEntityManager().isOpen()) {
getEntityManager().close();
}
}
}
Exemplo Entidade
@Entity
@Table(name="AULA")
public class Aula implements Serializable {
@Id
@Column(name="id")
private int id;
@Column(name="nome")
private String nome;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Exemplo Dao da Entidade Supracitada
public class AulaDao extends Dao<Aula> {
public void salvar(Aula aula){
save(aula);
}
}
10/02/2017
public String convertStreamtoString(InputStream is){
String line="";
String data="";
try{
BufferedReader br=new BufferedReader(new InputStreamReader(is));
while((line=br.readLine())!=null){
data+=line;
}
}
catch(Exception e){
e.printStackTrace();
}
return data;
}
26/04
Tabela para ser usada nos projetos
create table tipoproduto
(
idtipoproduto bigint not null,
nome varchar(200),
constraint pk_tipoproduto primary key (idtipoproduto)
);
create table produto
(
idproduto bigint not null,
fk_idtipoproduto bigint not null,
descricao varchar(200),
valor numeric(8,2),
constraint pk_produto primary key (idproduto),
constraint fk_produto_tp foreign key (fk_idtipoproduto) references tipoproduto (idtipoproduto)
);
insert into tipoproduto values (1, 'Alimenticio');
insert into tipoproduto values (2, 'Limpeza');
insert into tipoproduto values (3, 'Eletronicos');
insert into produto values (1, 1, 'lasanha', 7.88);
insert into produto values (2, 1, 'pizza', 17.28);
insert into produto values (3, 1, 'miojo', 0.58);
insert into produto values (4, 2, 'vassoura', 5.90);
insert into produto values (5, 3, 'Televisão', 1200.00);
insert into produto values (6, 3, 'celular', 260.98);
15/04
TRABALHO para o dia 19/04: Criar um web service que receba os dados de id, nome e peso, e insira em um banco utilizando o JPA. Criar também uma aplicação Android para consumir este web service. A aplicação Android pode enviar dados fixos (ou seja, não precisa criar uma tela para o usuário digitar os valores), e a forma de envio fica a sua escolha (via JSON ou via http).
Utilizar uma base chamada : Agenda Com uma unica tabela chamada : Pessoa, campos: Id (bigint e PK), Nome (varchar(200)) e Peso (numeric(5,2))
Para uso com o Hibernate
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
Para uso do JPA
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
12/04
22/03
18/03
15/03
11/03
código para o web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Meu aplicativo</display-name>
<servlet>
<servlet-name>Jersey RESTful Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>wsfera</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey RESTful Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
08/03
Aula introdutória da disciplina.