uma abordagem ao java ee 6
DESCRIPTION
Apresentação que abordou os conceitos do Java EE assim como as novidades da versão 6, focando em Servlets 3.0 e JSF 2.0, mostrando exemplos práticos e aplicações do zero. Ao final, foi apresentado em execução alguns dos melhores RIAs do mercado.TRANSCRIPT
![Page 1: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/1.jpg)
Daniel Campos e Ernesto Oliveira
Uma abordagem ao Java EE 6
![Page 2: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/2.jpg)
Tópicos Abordados JavaEE, o que é?; Arquitetura MVC; As novidades do Java EE 6; RIA e exemplos práticos; Próximos passos.
www.mgjug.com.br
![Page 3: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/3.jpg)
JavaEE, o que é?Conjunto de bibliotecas (API);Padrão de desenvolvimento;Componentes modulares;Executada em um servidor:
Web container:Tomcat.
Application Server:Glassfish; JbossAS.
www.mgjug.com.br
![Page 4: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/4.jpg)
Arquitetura MVCModel-View-Controller
www.mgjug.com.br
![Page 5: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/5.jpg)
As novidades do Java EE 6
www.mgjug.com.br
![Page 6: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/6.jpg)
As novidades do Java EE 6Servlet 3.0
www.mgjug.com.br
Como é no Servlet 2.5; Como está no Servlet 3.0; Modularização do web.xml; Servlets em tempo de execução; Asynchronous Processing.
![Page 7: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/7.jpg)
As novidades do Java EE 6Como é no Servlet 2.5
www.mgjug.com.br
Declarações extensas no arquivo web.xml.
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns=“http://java.sun.com/xml/ns/javaee” xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd” version="2.5">
<display-name>Aplicação WEB</display-name><servlet>
<servlet-name>HelloWorld</servlet-name><servlet-class>com.webapp. HelloWorld</servlet-class>
</servlet><servlet-mapping>
<servlet-name>HelloWorld</servlet-name><url-pattern>/hello</url-pattern>
</servlet-mapping></web-app>
![Page 8: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/8.jpg)
As novidades do Java EE 6Como é no Servlet 2.5
www.mgjug.com.br
public class HelloWorld extends HttpServlet { @Overrideprotected void doGet(HttpServletRequest request, HttpServetResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println(“MGJUG"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }}
![Page 9: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/9.jpg)
As novidades do Java EE 6 Como está no Servlet 3.0
www.mgjug.com.br
Uso de anotações (annotations) ao invés de XML.
@WebServlet(“/hello”)public class HelloWorld extends HttpServlet { @Overrideprotected void doGet(HttpServletRequest request, HttpServetResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter();...
![Page 10: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/10.jpg)
As novidades do Java EE 6 Como está no Servlet 3.0
www.mgjug.com.br
@WebServlet(value="/hello“, initParams={@WebInitParam(name=“jug",value="mgjug")})public class HelloWorld extends HttpServlet { ...
@WebServlet(urlPatterns={"/hello","/hello2"})public class HelloWorld extends HttpServlet {...
Configurando um servlet utilizando os atributos value e initParams:
Configurando várias url’s utilizando o atributo urlPatterns:
Lembre-se, não é possível ter ao mesmo tempo os atributos value e urlPatterns!
![Page 11: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/11.jpg)
As novidades do Java EE 6 Como está no Servlet 3.0
www.mgjug.com.br
Outras annotations:@WebFilter;@WebListener;
![Page 12: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/12.jpg)
As novidades do Java EE 6 Servlet 3.0: Modularização do web.xml
www.mgjug.com.br
Organização; Pode utilizar as mesmas tags do web.xml. Ex
servlet,servlet-mapping, etc.; A ordem de carga dos web-fragments pode ser definida; Localização (META-INF ou WEB-INF/lib).
<web-fragment> <name>Fragmento_A</name> </web-fragment>
<web-fragment> <name>Fragmento_B</name> </web-fragment>
web-fragment.xml
![Page 13: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/13.jpg)
As novidades do Java EE 6 Servlet 3.0 : Modularização do web.xml
www.mgjug.com.br
<absolute-ordering> <name>Fragmento_B</name> <name>Fragmento_A</name>
</absolute-ordering>
web.xml
Definindo a ordenação no web.xml;
![Page 14: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/14.jpg)
As novidades do Java EE 6 Servlet 3.0: Servlets em tempo de execução
www.mgjug.com.br
Interface ServletContext com novos métodos; Dispensa utilização de @WebServlet.
try{ ProgrammaticallyConfiguredServlet servlet = servletContext. createServlet(ProgrammaticallyConfiguredServlet.class); servletContext.addServlet("ProgrammaticallyConfiguredServlet“, servlet); ServletRegistration servletRegistration = servletContext.getServletRegistration( "ProgrammaticallyConfiguredServlet"); servletRegistration.addMapping("/ProgrammaticallyConfiguredServlet");}catch (ServletException servletException){ servletContext.log(servletException.getMessage());}
![Page 15: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/15.jpg)
As novidades do Java EE 6 Servlet 3.0: Asynchronous Processing
www.mgjug.com.br
Utilização de mais uma Thread por requisição; Libera thread para outras requisições; Configuração feita através do atributo asyncSupported =
true.
@WebServlet(name = "AsynchronousServlet", urlPatterns = {"/AsynchronousServlet"}, asyncSupported = true)
![Page 16: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/16.jpg)
www.mgjug.com.br
Servlet 3.0Exemplo Prático
![Page 17: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/17.jpg)
As novidades do Java EE 6 JavaServer Faces (JSF2.0)
www.mgjug.com.br
Facelets;Faces-config.xml opcional;Localização padrão de arquivos de
recurso;Suporte nativo à Ajax;
![Page 18: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/18.jpg)
As novidades do Java EE 6 JSF 2.0: Facelets
www.mgjug.com.br
Novo padrão do JSF para camada de visão;Versões antigas utilizavam JSP;XHTML, ganho de desempenho (30% a
50%);Facilidade na criação e reutilização de
templates;Independende de web container;Criação de componentes reutilizáveis.
![Page 19: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/19.jpg)
As novidades do Java EE 6 JSF 2.0: Facelets
www.mgjug.com.br
Facelets x JSP
JSP é compilada, executada, produzido o html e enviado ao browser;
Facelets utiliza processo rápido de compilação SAX-parser e foi concebido respeitando o ciclo de vida da árvore de componentes do JSF.
![Page 20: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/20.jpg)
As novidades do Java EE 6 JSF 2.0: Facelets
www.mgjug.com.br
JSP compilada
public class _LOGIN extends com.orionserver.http.OrionHttpJspPage { // ** Begin Declarations // ** End Declarations public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { response.setContentType( "text/html;charset=ISO-8859-1"); /* set up the intrinsic variables using the pageContext goober: ** session = HttpSession ** application = ServletContext ** out = JspWriter ** page = this ** config = ServletConfig ** all session/app beans declared in globals.jsa */
![Page 21: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/21.jpg)
As novidades do Java EE 6 JSF 2.0: Facelets
www.mgjug.com.br
__jsp_tag_ctru0.setPageContext(pageContext); __jsp_tag_ctru0.setParent(null); __jsp_tag_starteval=__jsp_tag_ctru0.doStartTag(); if (OracleJspRuntime.checkStartBodyTagEval(__jsp_tag_starteval))
out.print(TelaPBAb.getWebRootApp(pageContext) +"/css/sicaf/sicaf.css" ); __ojsp_s_out.write(__oracle_jsp_text[1]); out.print(TelaPBAb.getWebRootApp(pageContext) +"/css/sicaf/unifw.css" ); __ojsp_s_out.write(__oracle_jsp_text[2]);
__oracle_jsp_text[10] = "/js/sicaf/unifwMenuInit.js\"></script>\r\n<script language=\"JavaScript1.2\" fptype=\"dynamicanimation\" src=\"".getBytes("ISO8859_1");
JSP compilada
![Page 22: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/22.jpg)
As novidades do Java EE 6 JSF 2.0: Facelets
www.mgjug.com.br
Customização / Reutilização de componentes
< Cabeçalho omitido >
<ui:component> <h:outputLabel for="#{id}" value="#{label}" /> <h:inputText id="#{id}" value="#{value}" /> <h:message for="#{id}" /></ui:component>
itemFormulario.hxtml
![Page 23: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/23.jpg)
As novidades do Java EE 6 JSF 2.0: Facelets
www.mgjug.com.br
< Cabeçalho omitido >
<facelet-taglib> <namespace>http://exemplo.com.br/jsf</namespace> <tag> <tag-name>itemFormulario</tag-name> <source>itemFormulario.xhtml</source> </tag></facelet-taglib>
Customização / Reutilização de componentes
meuProjeto.taglib.xml
![Page 24: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/24.jpg)
As novidades do Java EE 6 JSF 2.0: Facelets
www.mgjug.com.br
< Cabeçalho omitido >
<context-param> <param-name>facelets.LIBRARIES</param-name> <param-value>/WEB-INF/facelets/meuProjeto.taglib.xml</param-value></context-param>
Registrando a Taglib
Customização / Reutilização de componentes
web.xml
![Page 25: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/25.jpg)
As novidades do Java EE 6 JSF 2.0: Facelets
www.mgjug.com.br
<html xmlns=http://www.w3.org/1999/xhtml xmlns:custom="http://exemplo.com.br/jsf">
<body> <custom:itemFormulario id="username" label=“Login:" value="#{loginController.username}" /></body>
Utilização
Customização / Reutilização de componentes
minhaPagina.xhtml
![Page 26: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/26.jpg)
As novidades do Java EE 6 JSF 2.0: Faces-config.xml opcional
www.mgjug.com.br
JSF 1.2• Definição de managed-bean;• Definição de regras de navegação.
![Page 27: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/27.jpg)
As novidades do Java EE 6 JSF 2.0: Faces-config.xml opcional
www.mgjug.com.br
<faces-config version="2.0"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd><managed-bean> <managed-bean-name>UsuarioManagedBean</managed-bean-name> <managed-bean-class>br.com.UsuarioManagedBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope></managed-bean> <navigation-rule> <from-view-id>/index.xhtml</from-view-id> <navigation-case> <from-outcome>inserir</from-outcome> <to-view-id>/usuario/cadastrar.xhtml</to-view-id> </navigation-case> </navigation-rule></faces-config>
![Page 28: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/28.jpg)
As novidades do Java EE 6 JSF 2.0: Faces-config.xml opcional
www.mgjug.com.br
JSF 2.0• Managed-bean anotado na própria
classe;• Regras de navegação utilizam o
nome do arquivo .xhtml (por default) através do action value (command link ou command button).
![Page 29: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/29.jpg)
As novidades do Java EE 6 JSF 2.0: Faces-config.xml opcional
www.mgjug.com.br
Classe
@ManagedBean(name = "login")@RequestScopedpublic class LoginManagedBean {
Arquivo .xhtml
<h:commandButton action="usuario/cadastrar" value="Cadastrar" />
![Page 30: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/30.jpg)
As novidades do Java EE 6 JSF 2.0: Localização padrão de arquivos de recurso
www.mgjug.com.br
Resources são artefatos que uma página JSF precisa para renderizar devidamente;CSS;Javascript;Imagens;
Localização (Raíz ou dentro do META-INF).
![Page 31: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/31.jpg)
As novidades do Java EE 6 JSF 2.0: Localização padrão de arquivos de recurso
www.mgjug.com.br
Por exemplo, podemos colocar um arquivo de estilo chamado styles.css no caminho/resources/css/styles.css.
Em nossas páginas JSF, nós podemos chamá-lo usando a tag <h:outputStylesheet>:
<h:outputStylesheet library="css" name="styles.css"/>
O valor do atributo library deve ser equivalente ao subdiretório de resources, nesse caso, css.
Exemplos para Javascript e Imagens:
<h:outputStylesheet library="css" name="styles.css"/>
<h:graphicImage library="images" name="logo.png"/>
![Page 32: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/32.jpg)
www.mgjug.com.br
JSF 2.0Exemplo Prático
![Page 33: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/33.jpg)
RIA – Rich Internet Application
www.mgjug.com.br
ZK Framework;Richfaces;Apache Trinidad;Icefaces;Primefaces;Vaadin.
![Page 34: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/34.jpg)
www.mgjug.com.br
RIAExemplo Prático
![Page 35: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/35.jpg)
Próximos passos
www.mgjug.com.br
![Page 36: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/36.jpg)
Próximos passos
www.mgjug.com.br
Comunidades virtuais•http://www.portaljava.com•http://www.guj.com.br
Grupos de usuários•http://www.soujava.org.br•http://www.mgjug.com.br•http://www.rsjug.org•http://www.dfjug.org
Cursos on-line•http://jedi.wv.com.br
![Page 37: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/37.jpg)
Próximos passos
www.mgjug.com.br
Download JDK•http://www.oracle.com/technetwork/java/javase/downloads/index.html
Download Netbeans IDE•http://www.netbeans.org
Download Eclipse IDE•http://www.eclipse.org
![Page 38: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/38.jpg)
MGJUG
www.mgjug.com.br
• Divulgação de vagas de emprego;• Divulgação de eventos;• Dúvidas;• Novidades;
JUG Leader :Adriano de Pinho Tavares - [email protected]
Coordenadores:Daniel Felicíssimo Campos - [email protected] Alvares Barbosa Junior - [email protected] Aurélio de Souza Mendes - [email protected]íades Araujo - [email protected] G. Souza - [email protected] Carvalho - [email protected]
+ de 500 membros
![Page 39: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/39.jpg)
Perguntas?
www.mgjug.com.br
![Page 40: Uma abordagem ao Java EE 6](https://reader035.vdocuments.site/reader035/viewer/2022062419/5572c691d8b42abb378b4aa8/html5/thumbnails/40.jpg)
Obrigado!
www.mgjug.com.br