Uma abordagem ao Java EE 6
-
Upload
danielfcampos -
Category
Technology
-
view
2.167 -
download
3
description
Transcript of Uma abordagem ao Java EE 6
Daniel Campos e Ernesto Oliveira
Uma abordagem ao Java EE 6
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
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
Arquitetura MVCModel-View-Controller
www.mgjug.com.br
As novidades do Java EE 6
www.mgjug.com.br
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.
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>
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 { }}
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();...
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!
As novidades do Java EE 6 Como está no Servlet 3.0
www.mgjug.com.br
Outras annotations:@WebFilter;@WebListener;
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
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;
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());}
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)
www.mgjug.com.br
Servlet 3.0Exemplo Prático
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;
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.
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.
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 */
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
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
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
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
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
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.
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>
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).
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" />
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).
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"/>
www.mgjug.com.br
JSF 2.0Exemplo Prático
RIA – Rich Internet Application
www.mgjug.com.br
ZK Framework;Richfaces;Apache Trinidad;Icefaces;Primefaces;Vaadin.
www.mgjug.com.br
RIAExemplo Prático
Próximos passos
www.mgjug.com.br
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
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
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
Perguntas?
www.mgjug.com.br
Obrigado!
www.mgjug.com.br