Recursoshttp://jfaerman.googlepages.com/
• Apresentações• Exemplos• Exercícios• Tutoriais• Links• Downloads
Desenvolvimento web com Java
# 2
Agenda• Evolução da arquitetura de sistemas
de informação• Servidor de aplicações• Contêiner Web• Aplicações Web JEE
Desenvolvimento web com Java
# 3
Benefícios e desafios de aplicações distribuídas
Requisitos não funcionais• Reusabilidade• Manutenibilidade• Desempenho
– Vazão– Latência
• Escalabilidade
• Segurança• Disponibilidade• Tolerância a falhas• Balanceamento de
Carga• Integração
# 7
A LasanhaDesenvolvimento web com Java
# 9
APP Server
Maquina Virtual Java
Sistema Operacional
Dispositivos Rede
APP
JSE APP
JEE APP
D E
V E
L O
P E
R
D E P L O Y E R
Aplicação
Transporte
Rede
Enlace
Física
AppServer GenéricoDesenvolvimento web com Java
Sistema OperacionalJava SE (JVM + SE Classpath)
App Server
Web Container EJB Container
Java EE Classpath (servlet, jp, ejb, persistence, jaxp, jms …)
web-app1.war
web-app2.war
ejb-app1.jar
ejb-app1.jar
enterprise-app1.earenterprise-app2.ear
J N D I
EJBs
Data Sources
Message Queue
Mail Session
Cache
HTTP
RMI
Web Container (JEE 5)• Servlets
– Java Server Pages• Filters• Listeners• Tag Libraries
– Tag Handlers– Tag Files
• Java Server Faces• Web Services
– SOAP– REST*
• Container Managed Authentication
Desenvolvimento web com Java
# 11
Web Application TípicaDesenvolvimento web com Java
HTTPServletdoGet()doPost()doPut()doDelete()
JSP<html> <% x++; %></html>
HTTPServletout.println(“<html>”) x++;out.println(“/<html>”)
request
response
Filter//beforeChain.doFilter()//after
request
response
compile
ServletContextListener
ServletContextAttributeListener
HttpSessionListener
HttpSessionAttributeListener
HttpSessionActivationListener
ServletRequestListener
ServletRequestAttributeListener
events
Exercício: App Web JEE• Servlet• Filter• JSP• Tag File• Listener• Deployment
Descriptor
Desenvolvimento web com Java
# 13
Os problemasDesenvolvimento web com Java
# 14
class InserePedido extends HttpServlet{ ... doPost(…){ if (! tudoCerto) … Pedido p = new Pedido(); p.setXxx(request.getParameter(“Xxx”)); request.setAttribute(“pedido”,p); out.print(“<htlm>…</html>”) requestDispatcher.forward(“some.jsp”) }}
<table> <% for.. %> <tr><td><%= if(pedido.isEspecial()) %>
<%= pedido.getValor() * 0.90%>
1. Duplicação2. Duplicação3. Problemas ortogonais
• Validação• Segurança• Transações
4. Manipulação do HTTP5. Negócio x
Apresentação6. Código prolixo7. …
Web Frameworks• Abstração
– Actions– Componentes*
• Reuso de apresentação– Componentes**– Templates
• Validação• Conversão• Pontos de extensão
Desenvolvimento web com Java
# 15
Soluções?Desenvolvimento web com Java
# 16
JSP
ServletStruts
Sitemesh
WebWork
Tapestry
GWT
Velocity
Cocoon
EchoCanyamo
Millstone
OXF
RIFE
TeaServlet
Shocks
Folium
JZonic
JPublishJATO
MaverickSOFIABarracuda
Bishop
Niggle
Verge
Bento
WingS
jStatemachine
Expresso
ActionFrmwk
TeaServlet
Jacquard
Jaffa JWAA
Warfare
Scope
OpenEmcee
Macaw
Chiba JBanana
JWarp
Cassandra WebOnSwing
Dinamica
Helma
JApple
JFormular
Melati
Genie
JSF
BishopSpringMVC
Tiles
Trubine Groovlets
Freemarker
Wicket
Recommended