O documento apresenta uma introdução ao Java EE 6, abordando tópicos como:
1) O que é o Java EE e sua arquitetura MVC;
2) As principais novidades do Java EE 6 como Servlet 3.0, JSF 2.0 e RIA;
3) Exemplos práticos dessas tecnologias e próximos passos para o aprendizado.
2. 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
3. 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
6. As novidades do Java EE 6
Servlet 3.0
Como é no Servlet 2.5;
Como está no Servlet 3.0;
Modularização do web.xml;
Servlets em tempo de execução;
Asynchronous Processing.
www.mgjug.com.br
7. As novidades do Java EE 6
Como é no Servlet 2.5
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>
www.mgjug.com.br
8. As novidades do Java EE 6
Como é no Servlet 2.5
public class HelloWorld extends HttpServlet {
@Override
protected 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 {
}
}
www.mgjug.com.br
9. As novidades do Java EE 6
Como está no Servlet 3.0
Uso de anotações (annotations) ao invés de
XML.
@WebServlet(“/hello”)
public class HelloWorld extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request,
HttpServetResponse response) throws ServletException,
IOException {
PrintWriter out = response.getWriter();
...
www.mgjug.com.br
10. As novidades do Java EE 6
Como está no Servlet 3.0
Configurando um servlet utilizando os atributos value e initParams:
@WebServlet(value="/hello“,
initParams={@WebInitParam(name=“jug",value="mgjug")
})
public class HelloWorld extends HttpServlet {
...
Configurando várias url’s utilizando o atributo urlPatterns:
@WebServlet(urlPatterns={"/hello","/hello2"})
public class HelloWorld extends HttpServlet {
...
Lembre-se, não é possível ter ao
mesmo tempo os atributos value
e urlPatterns! www.mgjug.com.br
11. As novidades do Java EE 6
Como está no Servlet 3.0
Outras annotations:
@WebFilter;
@WebListener;
www.mgjug.com.br
12. As novidades do Java EE 6
Servlet 3.0: Modularização do web.xml
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 www.mgjug.com.br
13. As novidades do Java EE 6
Servlet 3.0 : Modularização do web.xml
Definindo a ordenação no web.xml;
<absolute-ordering>
<name>Fragmento_B</name>
<name>Fragmento_A</name>
</absolute-ordering>
web.xml
www.mgjug.com.br
14. As novidades do Java EE 6
Servlet 3.0: Servlets em tempo de execução
Interface ServletContext com novos métodos;
Dispensa utilização de @WebServlet.
try{
ProgrammaticallyConfiguredServlet servlet = servletContext.
createServlet(ProgrammaticallyConfiguredServlet.class);
servletContext.addServlet("ProgrammaticallyConfiguredSer
vlet“, servlet);
ServletRegistration servletRegistration =
servletContext.getServletRegistration( "ProgrammaticallyConfi
guredServlet");
servletRegistration.addMapping("/ProgrammaticallyConfigured
Servlet");
}catch (ServletException servletException){
servletContext.log(servletException.getMessage());
}
www.mgjug.com.br
15. As novidades do Java EE 6
Servlet 3.0: Asynchronous Processing
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
17. As novidades do Java EE 6
JavaServer Faces (JSF2.0)
Facelets;
Faces-config.xml opcional;
Localização padrão de arquivos de
recurso;
Suporte nativo à Ajax;
www.mgjug.com.br
18. As novidades do Java EE 6
JSF 2.0: Facelets
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.
www.mgjug.com.br
19. As novidades do Java EE 6
JSF 2.0: Facelets
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.
www.mgjug.com.br
20. As novidades do Java EE 6
JSF 2.0: Facelets
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
*/
www.mgjug.com.br
21. As novidades do Java EE 6
JSF 2.0: Facelets
JSP compilada
__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>rn<script language="JavaScript1.2"
fptype="dynamicanimation" src="".getBytes("ISO8859_1");
www.mgjug.com.br
22. As novidades do Java EE 6
JSF 2.0: Facelets
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
www.mgjug.com.br
23. As novidades do Java EE 6
JSF 2.0: Facelets
Customização / Reutilização de componentes
< 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>
meuProjeto.taglib.xml
www.mgjug.com.br
24. As novidades do Java EE 6
JSF 2.0: Facelets
Customização / Reutilização de componentes
Registrando a Taglib
< Cabeçalho omitido >
<context-param>
<param-name>facelets.LIBRARIES</param-name>
<param-value>/WEB-INF/facelets/meuProjeto.taglib.xml</param-value>
</context-param>
web.xml
www.mgjug.com.br
25. As novidades do Java EE 6
JSF 2.0: Facelets
Customização / Reutilização de componentes
Utilização
<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>
minhaPagina.xhtml
www.mgjug.com.br
26. As novidades do Java EE 6
JSF 2.0: Faces-config.xml opcional
JSF 1.2
• Definição de managed-bean;
• Definição de regras de navegação.
www.mgjug.com.br
28. As novidades do Java EE 6
JSF 2.0: Faces-config.xml opcional
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).
www.mgjug.com.br
29. As novidades do Java EE 6
JSF 2.0: Faces-config.xml opcional
Classe
@ManagedBean(name = "login")
@RequestScoped
public class LoginManagedBean {
Arquivo .xhtml
<h:commandButton action="usuario/cadastrar" value="Cadastrar" />
www.mgjug.com.br
30. As novidades do Java EE 6
JSF 2.0: Localização padrão de arquivos de recurso
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).
www.mgjug.com.br
31. As novidades do Java EE 6
JSF 2.0: Localização padrão de arquivos de recurso
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