O documento apresenta Diénert de Alencar Vieira e seu histórico profissional, além de um roteiro sobre sistemas web e tecnologias como JSP, Servlets, Facelets, JSF, JBoss Seam, RichFaces e padrões de projeto.
Boas práticas de programação com Object Calisthenics
Sistema S2DG e Tecnologias Web
1. Diénert de Alencar Vieira
SISTEMA DISCENTE/DOCENTE DE
GRADUAÇÃO E TECNOLOGIAS UTILIZADAS
2. QUEM SOU EU?
Tecnólogo em Sistemas para Internet – IFPB
Bacharelando em Ciência da Computação –
UFPB
Sun Certified Java Programmer - SCJP 6
Engenheiro de Software – Dynavideo
Sócio da empresa IDEEN Soluções em
Informática
ex-Arquiteto do Projeto de Engenharia
2
3. ROTEIRO
Overview da Arquitetura de Sistemas Web
Pequeno Histórico em JSP e Servlets
Facelets
JSF
JBoss Seam
JBoss Annotations
JBoss EL
3
4. ROTEIRO
Richfaces
Apresentação do Sistema S2DG
Se der tempo: Utilizando SVN com plugin do
Eclipse
Se der tempo: Padrões de Projeto
4
6. ARQUITETURA DE SISTEMAS WEB
O servidor pode conter todas as páginas
HTML
As páginas HTML, ou partes das páginas
podem ser geradas dinâmicamente
Diversas são as tecnologias que podem
gerar HTML
Exemplos: CGI, PHP, JAVA, RUBY, ASP ...
6
7. HISTÓRICO EM SERVLETS E JSP
Servlets
Uma classe na linguagem de programação Java
que dinamicamente processa requisições e
respostas, proporcionando dessa maneira novos
recursos aos servidores. A definição mais usada
considera-os extensões de servidores.
7
11. HISTÓRICO EM SERVLETS E JSP
JSP - Expression Languages
Poder de Processamento e Acesso a JavaBeans
Ref.: http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html
11
12. HISTÓRICO EM SERVLETS E JSP
EL Expression Resultado
${1 > (4/2)} False
${4.0 >= 3} True
${100.0 == 100} True
${(10*10) ne 100} False
${'a' < 'b'} True
${'hip' gt 'hit'} False
${4 > 3} True
${3 div 4} 0.75
${header["host"]} O próprio host
Ref.: http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html
12
18. JSF
Framework de aplicação WEB com o
propósito de simplificar o desenvolvimento
de UI para Java EE
Framework MVC para WEB
Interfaces gráficas baseadas em
componentes
Implementa o padrão Front Controller
18
21. JSF
Uso das bibliotecas de tags de renderização HTML e
CORE do JavaServer Faces
Para um página JSP, usar:
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
Para uma página que utilize Facelets, usar:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
21
23. JBOSS SEAM
Poderosa plataforma de desenvolvimento de
código aberto para construir Aplicações
Ricas para Internet em Java
Integra AJAX, JSF, JPA, EJB 3.0 e BPM
Configuração por exceção
Menos xml’s
Mais anotações
23
24. JBOSS SEAM
Apache
Tomcat
Glassfish
Jetty
Jboss AS – JBoss Application Server
24
25. JBOSS SEAM - ANNOTATIONS
@Annotation:
Complementam Javadocs
Não afeta a semântica do código em si
Afeta a forma como estes programas são
tratados por ferramentas e bibliotecas
Substituem xml em muitos casos
25
26. JBOSS SEAM - ANNOTATIONS
@Entity
@Name("user")
@Scope(SESSION)
@Table(name="users")
public class User implements Serializable
{
private static final long serialVersionUID = 18814135007114419
51L;
@Id @NotNull @Length(min=5, max=15)
private String username;
private String password;
private String name;
Ref.: http://docs.jboss.org/seam/2.2.0.GA/reference/en-
US/html/tutorial.html
26
27. JBOSS SEAM - ANNOTATIONS
Injeção de Dependência: é um padrão de
desenvolvimento utilizado quando é necessário
manter o baixo o nível de acoplamento entre
diferentes módulos de um sistema.
Nesta solução as dependências entre os
módulos não são definidas programaticamente,
mas sim pela configuração de uma
infraestrutura de software (container) que é
responsável por "injetar" em cada componente
suas dependências declaradas
27
28. JBOSS SEAM - ANNOTATIONS
@Name(“teste”)
class Teste {
@In
private EntityManager entityManager;
metodo() {
entityManager.edit(AlgumaCoisa);
}
}
28
29. JBOSS SEAM - ANNOTATIONS
Bijeção de Dependência: injection e
outjection de dependência
O primeiro fornece a instância da
dependência
O segundo fornece a dependência para a
interface
29
30. JBOSS SEAM - ANNOTATIONS
@Name(“teste”)
class Teste {
@Out
private User currentUser;
}
#{currentUser.name}
30
31. JBOSS SEAM - EL
Idêntica à EL JSF, contudo aceita
parâmetros
Apresentar o projeto
31