SlideShare une entreprise Scribd logo
1  sur  52
Lato Sensu em
                                           Sistemas Orientados a Objetos




                              Módulo 1
                             Desenvolvimento de
                            Componentes Java Web
                                   (revisão)




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 2°/2009




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                  Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            (re)Visão Geral



Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                        Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                   WWW

                     • É uma rede de redes de computadores.
                     • Baseada numa arquitetura Cliente-Servidor.
                     • Comunicação via HTTP.


Saturday, August 15, 2009
Saturday, August 15, 2009
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                             Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            HTTP




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                                  Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                             HTTP
                     • Clientes:
                            -   Fazem as requisições GET, POST, HEAD e outras.

                            -   Processam as respostas.

                     • Servidores:
                            -   Interpretam as requisições e

                            -   Enviam as respostas ao cliente.


Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                         Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                  Web Site
                                   conteúdo estático




               http://www.servidor.com.br/relatorio/relatoriodiario.html
Saturday, August 15, 2009
http://asp3wiki.wrox.com/wiki/1-1-1-static-pages-vs-dynamic-pages
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                              Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                             Aplicações Web
                                     conteúdo dinâmico




         -       CGI (Common Gateway Interface).

         -       ASP (Active Server Pages).

         -       Servlets.

         -       JSP (Java Server Pages).




Saturday, August 15, 2009
http://asp3wiki.wrox.com/wiki/1-1-1-static-pages-vs-dynamic-pages
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                             Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            CGI




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                     Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                  CGI
                            1 requisição, 1 processo




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                     Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                  CGI
                            N requisições, N processos




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                                           Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                                      CGI
                     • Vantagens:
                            -   Podem ser escritos em várias linguagens.
                                Mais populares são C e Perl.


                     • Desvantagens:
                            -   Cada shell é um processo.

                            -   Não é escalável.

                            -   A linguaguem utilizada:
                                Nem sempre é robusta ou orientada a objetos.

                                Nem sempre é independente de plataforma.
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                               Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            Servlets




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                              Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            Servets




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                              Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            Servets




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                                              Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                                 Servlets
                     •      Vantagens:
                            -   Performance
                                Threads são mais rápidas que processos.


                            -   Escalabilidade

                            -   Linguagem Java é robusta e orientada a objetos.

                            -   Indenpendente de plataforma.

                     •      Desvantagens:
                            -   O processamento da lógica de negócio é realizado
                                em conjunto com a geração HTML.
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                                                          Desenvolvimento de Aplicaões Web Avançado - 2°/2009



                                                     Servlets e CGI
                                                                    problemas

       •       Para a geração de páginas dinâmicas, é preciso embutir o
               HTML ou XML dentro de instruções de uma linguagem
               de programação. Em Java Servlets seria o seguinte:
               out.print(“<html>”);
               out.print(“<head>”);
               ...
               out.print(“</head>”);
               out.print(“<table border='1' cellspacing='0' cellpadding='5'>”);
               out.print(“<tr><th>Número</th><th>Número^2</th></tr>”);
               for (int i=0; i<10; i++)‫{ ‏‬
                   out.print(“<tr><td>” + i + “</td><td>” + (i*i) + “</td></tr>”);
               }
               out.print(“</table>”);
               out.print(“</html>”);


Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                               Desenvolvimento de Aplicaões Web Avançado - 2°/2009



                                     Servlets e CGI
                                             problemas



                     •      Maior parte da informação da página é estática,
                            no entanto, precisa ser embutida no código.


                     •      Afasta o Web designer do processo de criação
                            de aplicações Web.


                     •      O programador fica sendo o responsável pela
                            parte do HTML.
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 2°/2009




Saturday, August 15, 2009
a                                         Lato Sensu em Sistemas Orientados a Objetos
                                          Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                   Java                                            <html>
                                <html/>                                     Java
                   Java                                           </html>




               Servlets                                                  JSP
    Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                                 Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                               JSP
                 •      Coloca código de programação em páginas HTML


                    <html>
                    <head>
                    ...
                    </head>
                    <table border='1' cellspacing='0' cellpadding='5'>
                    <tr><th>Número</th><th>Número^2</th></tr>
                    <%
                        for (int i=0; i<10; i++)‫‏‬
                       {
                    %>
                           <tr><td> <%= i %> </td><td> <%= i*i %> </td></tr>
                    <%
                        }
                    %>
                    </table>
                    </html>
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                                     Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                                   JSP
                     •      Vantagens:
                            -   Todas as vantagens do uso de Servlets;

                            -   Uso de linguagem Java como a “linguagem de script”.



                     •      Desvantagens:
                            -   Se usada só, o código de script terá de realizar lógica
                                de controle e de negócio, tornando as páginas JSP
                                muito complexas de se manter.


Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                              Desenvolvimento de Aplicaões Web Avançado - 2°/2009



                            WebApp
                             estrutura




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                                         Web
                                                       Application
                                                        Archive
                                                         WAR




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                                  Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                            Tomcat
                     • Servidor de aplicações Web.
                     • Gratuito.
                     • Código Livre.
                            -   http://jakarta.apache.org/tomcat/index.html

                     • Muito simples de se utilizar.

Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                                 Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                        Diretórios do Tomcat
     •       bin
           -       Arquivos para a iniciar e parar o Tomcat.

     •       conf
           -       Arquivos de configuração.

     •       logs
           -       Arquivos de logs do Tomcat.

     •       webapps
           -       Onde as aplicações Web devem ser implantadas.

Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                             Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                                       Deploy
                            Implantando uma aplicação Web no Tomcat




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            ?
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                               Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            Servlets



Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                             Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                         Servlet

                               É um componente que fica do lado do
                            servidor, capaz de processar dinamicamente
                                   requisições e gerar respostas.




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                              Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            Classes




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                 Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            Ciclo de vida




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                 Desenvolvimento de Aplicaões Web Avançado - 2°/2009




   package capitulo02;

   import java.io.IOException;
   import java.io.PrintWriter;
   import java.util.Date;

   import javax.servlet.*;

   public class MyServlet extends GenericServlet
   {
      public void init(ServletConfig config) throws ServletException
      {
         super.init(config);
         Date thisDate = new Date();
         log("MyServlet inicializada em:" + thisDate);
      }

   ...


Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                                  Desenvolvimento de Aplicaões Web Avançado - 2°/2009




    public void             service(ServletRequest    request, ServletResponse response)‫‏‬
                            throws ServletException, IOException    {

                  response.setContentType("text/html");
                  PrintWriter out = response.getWriter();
                  out.println("<html>");
                  out.println(" <head>");
                  out.println("    <title>Servlet Simples</title>");
                  out.println(" </head>");
                  out.println(" <body>");
                  out.println("    <h2>" + getServletName() + "</h2>");
                  out.println("Este é um exemplo de Servlet Simples.<br>");
                  out.println("<hr>");
                  out.println(" </body>");
                  out.println("</html>");
                  out.close();
           }

           public void destroy()      {
              Date thisDate = new Date();
              log("MyServlet destruida em:" + thisDate);
           }
    }
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                          Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                                    Web.xml
        <web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4">

                <servlet>
                   <servlet-name>MyServlet</servlet-name>
                   <servlet-class>capitulo02.MyServlet</servlet-class>
                </servlet>

                <servlet-mapping>
                   <servlet-name>MyServlet</servlet-name>
                   <url-pattern>/MyServlet</url-pattern>
                </servlet-mapping>

        </web-app>


Saturday, August 15, 2009
package capitulo02;
 ...
 public class HttpServletHeaders             extends HttpServlet                  {


       public void          doGet(HttpServletRequest    request, HttpServletResponse response)‫‏‬
                            throws IOException, ServletException {

             response.setContentType("text/html");
             PrintWriter out = response.getWriter();
             out.println("<html>");
             out.println("<body bgcolor="white">");
             out.println("<head>");
             out.println("<title>Here are the headers</title>");
             out.println("</head>");
             out.println("<body>");
             out.println("<h3>Headers</h3>");
             out.println("<table border=0>");
             Enumeration e = request.getHeaderNames();
             while (e.hasMoreElements())‫{ ‏‬

                   String headerName = (String) e.nextElement();
                   String headerValue = request.getHeader(headerName);
                   out.println("<tr><td>");
                   out.println(headerName);
                   out.println("</td><td>");
                   out.println(headerValue);
                   out.println("</td></tr>");
             }
             out.println("</table>");
       }
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            ?
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            JSP



Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                            Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                    JSP – Java Server Pages

      •       É outra forma de desenvolver aplicações Web com Java.
      •       É uma extensão de Servlets.
      •       Tudo que funciona para Servlets funciona para JSP.
            -       Na verdade, JSP é uma Servlet quando está executando.

      •       Trabalha com HTTP requests e responses.


Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                          Desenvolvimento de Aplicaões Web Avançado - 1°/2009




               O que há de errado com Servlets?
  public void doPost(HttpServletRequest request, HttpServletResponse response)
  
   
  
    throws ServletException, IOException {

         response.setContentType("text/html");
         PrintWriter out = response.getWriter();
         out.println("<HTML>");
         out.println("<HEAD><TITLE>Usando Servlets</TITLE></HEAD>");
         out.println("<BODY BGCOLOR=#123123>");

         //Obtém os nomes dos parâmetros
         Enumeration parameters = request.getParameterNames();
         String param = null;
         while (parameters.hasMoreElements())‫‏‬
         {
            param = (String) parameters.nextElement();
            out.println(param + ": " + request.getParameter(param) + "<BR>");
         }
         out.println("</BODY>");
         out.println("</HTML>");
         out.close();
  }

Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                 Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                               JSP
                              vantagens
<%@ page import="java.util.Enumeration" %>
<HTML>
<HEAD><TITLE>Usando JSP</TITLE></HEAD>
<BODY BGCOLOR=#DADADA>
<%
   //Obtém os nomes dos parâmetros
   Enumeration parameters = request.getParameterNames();
   String param = null;
   while (parameters.hasMoreElements())‫‏‬
   {
       param = (String) parameters.nextElement();
       out.println(param + ":" + request.getParameter(param) + "<BR>");
   }
   out.close();
%>
</BODY>
</HTML>
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                                  Desenvolvimento de Aplicaões Web Avançado - 2°/2009



   <%@ page import="capitulo04.NumberGuessBean" %>                                               diretivas
   <jsp:useBean id="numguess"
                 class="capitulo04.NumberGuessBean"
                 scope="session"/>
   <jsp:setProperty name="numguess" property="*"/>                                                beans
   <html>
   <head><title>Acerte o Número</title></head>
   <body bgcolor="white">
   <font size=4>
   <%
      if (numguess.getSuccess()) {                                                              scriptlets
          numguess.reset();
   %>
          Parabéns!Você acertou depois de <%= numguess.getNumGuesses() %> tentativas.<p>
          <a href="acerteNumero.jsp">Tentar novamente?</a>
   <%
      }
      else if (numguess.getNumGuesses() == 0) {
   %>
          Bem Vindo ao jogo para acertar o número.<p>                                             ações
          <jsp:include page="input.html" flush="true"/>
   <%
      }
      else {
   %>
          Tente <b><%= numguess.getHint() %></b>.<br>
          Já foram feitas <%= numguess.getNumGuesses() %> tentativas.<p>                       expressões
          <jsp:include page="input.html" flush="true"/>
   <% } %>
   </font>
   </body>
   </html>


Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 1°/2009




               Elementos de uma página JSP

 <html>
 <body>
       Acerte o número de 1 a 100.<p>
       <form method=get>
          Qual o seu palpite? <input type=text name=guess>
          <input type=submit value="Submit">
       </form>
 </body>
 </html>


                                                                       input.html
Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                                          Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                 Sintaxe dos elementos de uma JSP
                     •      Sempre interpretados no servidor.
                     •      Nunca chegam ao clinte.
                            -   Cliente só vê HTML!



                     •      Scriptlets: <% ... %>
                     •      Expressões: <%= ... %>
                     •      Declarações: <%! ... %>
                     •      Comentários: <%-- ... --%>
                     •      Diretivas: <%@ ... %>
                     •      Ações: <jsp:ação ... />
                     •      Custom tags: <prefixo:elemento ... />


Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                    Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                            Objetos implícitos




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 1°/2009




               Ciclo de vida de uma JSP




Saturday, August 15, 2009
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 1°/2009




                            ?
Saturday, August 15, 2009
Lato Sensu em
                                       Sistemas Orientados a Objetos




                   Q&A      MSc. Alexandre Gomes
                            alegomes@gmail.com
Saturday, August 15, 2009

Contenu connexe

Similaire à Desenvolvimento de aplicações web com Java

Aula - Arquiteturas de aplicações móveis
Aula - Arquiteturas de aplicações móveisAula - Arquiteturas de aplicações móveis
Aula - Arquiteturas de aplicações móveisJanynne Gomes
 
Apresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias DigitaisApresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias DigitaisÉdipo Souza
 
Currículo Fernanda Paulo Ramos - Nov/2013
Currículo Fernanda Paulo Ramos - Nov/2013Currículo Fernanda Paulo Ramos - Nov/2013
Currículo Fernanda Paulo Ramos - Nov/2013Fernanda Paulo Ramos
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
IBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações MobileIBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações MobileAlex Barbosa Coqueiro
 
Tecnologias Web 2.0
Tecnologias Web 2.0 Tecnologias Web 2.0
Tecnologias Web 2.0 Duarte Nunes
 
Avaliação em mobile Websites
Avaliação em mobile WebsitesAvaliação em mobile Websites
Avaliação em mobile WebsitesMCM-IPG
 
ApresentaçãO Amplitude Net
ApresentaçãO Amplitude NetApresentaçãO Amplitude Net
ApresentaçãO Amplitude Netluismtavares
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B Rguestb9d145
 
VI Komet - Backend as a Service - 2015
VI Komet - Backend as a Service - 2015VI Komet - Backend as a Service - 2015
VI Komet - Backend as a Service - 2015Joao Valle
 
Alexandre Fonseca - Bazaar Enhancements
Alexandre Fonseca - Bazaar EnhancementsAlexandre Fonseca - Bazaar Enhancements
Alexandre Fonseca - Bazaar Enhancementscm_seminars
 
Apresentação sobre web 2.0
Apresentação sobre web 2.0Apresentação sobre web 2.0
Apresentação sobre web 2.0Carlos Serrao
 
Liferay RoadShow 2010 | O Futuro no Desenvolvimento de Portais. Por Bruno Tar...
Liferay RoadShow 2010 | O Futuro no Desenvolvimento de Portais. Por Bruno Tar...Liferay RoadShow 2010 | O Futuro no Desenvolvimento de Portais. Por Bruno Tar...
Liferay RoadShow 2010 | O Futuro no Desenvolvimento de Portais. Por Bruno Tar...Vertigo Tecnologia
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambMicrosoft Brasil
 
Apresentacao tcc diego final
Apresentacao tcc diego finalApresentacao tcc diego final
Apresentacao tcc diego finalDiego
 
Frameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPFrameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPElton Minetto
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...fabio perrella
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasCelso Crivelaro
 

Similaire à Desenvolvimento de aplicações web com Java (20)

Aula - Arquiteturas de aplicações móveis
Aula - Arquiteturas de aplicações móveisAula - Arquiteturas de aplicações móveis
Aula - Arquiteturas de aplicações móveis
 
Apresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias DigitaisApresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias Digitais
 
2 curso-titanium-plataforma
2 curso-titanium-plataforma2 curso-titanium-plataforma
2 curso-titanium-plataforma
 
Currículo Fernanda Paulo Ramos - Nov/2013
Currículo Fernanda Paulo Ramos - Nov/2013Currículo Fernanda Paulo Ramos - Nov/2013
Currículo Fernanda Paulo Ramos - Nov/2013
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
IBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações MobileIBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações Mobile
 
Tecnologias Web 2.0
Tecnologias Web 2.0 Tecnologias Web 2.0
Tecnologias Web 2.0
 
Avaliação em mobile Websites
Avaliação em mobile WebsitesAvaliação em mobile Websites
Avaliação em mobile Websites
 
ApresentaçãO Amplitude Net
ApresentaçãO Amplitude NetApresentaçãO Amplitude Net
ApresentaçãO Amplitude Net
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B R
 
VI Komet - Backend as a Service - 2015
VI Komet - Backend as a Service - 2015VI Komet - Backend as a Service - 2015
VI Komet - Backend as a Service - 2015
 
Alexandre Fonseca - Bazaar Enhancements
Alexandre Fonseca - Bazaar EnhancementsAlexandre Fonseca - Bazaar Enhancements
Alexandre Fonseca - Bazaar Enhancements
 
Apresentação sobre web 2.0
Apresentação sobre web 2.0Apresentação sobre web 2.0
Apresentação sobre web 2.0
 
Liferay RoadShow 2010 | O Futuro no Desenvolvimento de Portais. Por Bruno Tar...
Liferay RoadShow 2010 | O Futuro no Desenvolvimento de Portais. Por Bruno Tar...Liferay RoadShow 2010 | O Futuro no Desenvolvimento de Portais. Por Bruno Tar...
Liferay RoadShow 2010 | O Futuro no Desenvolvimento de Portais. Por Bruno Tar...
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcamb
 
Apresentacao tcc diego final
Apresentacao tcc diego finalApresentacao tcc diego final
Apresentacao tcc diego final
 
Frameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPFrameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHP
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
 

Desenvolvimento de aplicações web com Java

  • 1. Lato Sensu em Sistemas Orientados a Objetos Módulo 1 Desenvolvimento de Componentes Java Web (revisão) Saturday, August 15, 2009
  • 2. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Saturday, August 15, 2009
  • 3. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 (re)Visão Geral Saturday, August 15, 2009
  • 4. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 WWW • É uma rede de redes de computadores. • Baseada numa arquitetura Cliente-Servidor. • Comunicação via HTTP. Saturday, August 15, 2009
  • 7. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 HTTP Saturday, August 15, 2009
  • 8. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 HTTP • Clientes: - Fazem as requisições GET, POST, HEAD e outras. - Processam as respostas. • Servidores: - Interpretam as requisições e - Enviam as respostas ao cliente. Saturday, August 15, 2009
  • 9. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Web Site conteúdo estático http://www.servidor.com.br/relatorio/relatoriodiario.html Saturday, August 15, 2009
  • 11. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Aplicações Web conteúdo dinâmico - CGI (Common Gateway Interface). - ASP (Active Server Pages). - Servlets. - JSP (Java Server Pages). Saturday, August 15, 2009
  • 13. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 CGI Saturday, August 15, 2009
  • 14. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 CGI 1 requisição, 1 processo Saturday, August 15, 2009
  • 15. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 CGI N requisições, N processos Saturday, August 15, 2009
  • 16. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 CGI • Vantagens: - Podem ser escritos em várias linguagens. Mais populares são C e Perl. • Desvantagens: - Cada shell é um processo. - Não é escalável. - A linguaguem utilizada: Nem sempre é robusta ou orientada a objetos. Nem sempre é independente de plataforma. Saturday, August 15, 2009
  • 17. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Servlets Saturday, August 15, 2009
  • 18. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Servets Saturday, August 15, 2009
  • 19. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Servets Saturday, August 15, 2009
  • 20. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Servlets • Vantagens: - Performance Threads são mais rápidas que processos. - Escalabilidade - Linguagem Java é robusta e orientada a objetos. - Indenpendente de plataforma. • Desvantagens: - O processamento da lógica de negócio é realizado em conjunto com a geração HTML. Saturday, August 15, 2009
  • 21. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Servlets e CGI problemas • Para a geração de páginas dinâmicas, é preciso embutir o HTML ou XML dentro de instruções de uma linguagem de programação. Em Java Servlets seria o seguinte: out.print(“<html>”); out.print(“<head>”); ... out.print(“</head>”); out.print(“<table border='1' cellspacing='0' cellpadding='5'>”); out.print(“<tr><th>Número</th><th>Número^2</th></tr>”); for (int i=0; i<10; i++)‫{ ‏‬ out.print(“<tr><td>” + i + “</td><td>” + (i*i) + “</td></tr>”); } out.print(“</table>”); out.print(“</html>”); Saturday, August 15, 2009
  • 22. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Servlets e CGI problemas • Maior parte da informação da página é estática, no entanto, precisa ser embutida no código. • Afasta o Web designer do processo de criação de aplicações Web. • O programador fica sendo o responsável pela parte do HTML. Saturday, August 15, 2009
  • 23. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Saturday, August 15, 2009
  • 24. a Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Java <html> <html/> Java Java </html> Servlets JSP Saturday, August 15, 2009
  • 25. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 JSP • Coloca código de programação em páginas HTML <html> <head> ... </head> <table border='1' cellspacing='0' cellpadding='5'> <tr><th>Número</th><th>Número^2</th></tr> <% for (int i=0; i<10; i++)‫‏‬ { %> <tr><td> <%= i %> </td><td> <%= i*i %> </td></tr> <% } %> </table> </html> Saturday, August 15, 2009
  • 26. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 JSP • Vantagens: - Todas as vantagens do uso de Servlets; - Uso de linguagem Java como a “linguagem de script”. • Desvantagens: - Se usada só, o código de script terá de realizar lógica de controle e de negócio, tornando as páginas JSP muito complexas de se manter. Saturday, August 15, 2009
  • 27. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 WebApp estrutura Saturday, August 15, 2009
  • 28. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Web Application Archive WAR Saturday, August 15, 2009
  • 29. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Tomcat • Servidor de aplicações Web. • Gratuito. • Código Livre. - http://jakarta.apache.org/tomcat/index.html • Muito simples de se utilizar. Saturday, August 15, 2009
  • 30. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Diretórios do Tomcat • bin - Arquivos para a iniciar e parar o Tomcat. • conf - Arquivos de configuração. • logs - Arquivos de logs do Tomcat. • webapps - Onde as aplicações Web devem ser implantadas. Saturday, August 15, 2009
  • 31. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Deploy Implantando uma aplicação Web no Tomcat Saturday, August 15, 2009
  • 32. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 ? Saturday, August 15, 2009
  • 33. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Servlets Saturday, August 15, 2009
  • 34. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Servlet É um componente que fica do lado do servidor, capaz de processar dinamicamente requisições e gerar respostas. Saturday, August 15, 2009
  • 35. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Classes Saturday, August 15, 2009
  • 36. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Ciclo de vida Saturday, August 15, 2009
  • 37. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 package capitulo02; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import javax.servlet.*; public class MyServlet extends GenericServlet { public void init(ServletConfig config) throws ServletException { super.init(config); Date thisDate = new Date(); log("MyServlet inicializada em:" + thisDate); } ... Saturday, August 15, 2009
  • 38. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 public void service(ServletRequest request, ServletResponse response)‫‏‬ throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println(" <head>"); out.println(" <title>Servlet Simples</title>"); out.println(" </head>"); out.println(" <body>"); out.println(" <h2>" + getServletName() + "</h2>"); out.println("Este é um exemplo de Servlet Simples.<br>"); out.println("<hr>"); out.println(" </body>"); out.println("</html>"); out.close(); } public void destroy() { Date thisDate = new Date(); log("MyServlet destruida em:" + thisDate); } } Saturday, August 15, 2009
  • 39. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Web.xml <web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4"> <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>capitulo02.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyServlet</url-pattern> </servlet-mapping> </web-app> Saturday, August 15, 2009
  • 40. package capitulo02; ... public class HttpServletHeaders extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)‫‏‬ throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body bgcolor="white">"); out.println("<head>"); out.println("<title>Here are the headers</title>"); out.println("</head>"); out.println("<body>"); out.println("<h3>Headers</h3>"); out.println("<table border=0>"); Enumeration e = request.getHeaderNames(); while (e.hasMoreElements())‫{ ‏‬ String headerName = (String) e.nextElement(); String headerValue = request.getHeader(headerName); out.println("<tr><td>"); out.println(headerName); out.println("</td><td>"); out.println(headerValue); out.println("</td></tr>"); } out.println("</table>"); } Saturday, August 15, 2009
  • 41. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 ? Saturday, August 15, 2009
  • 42. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 JSP Saturday, August 15, 2009
  • 43. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 JSP – Java Server Pages • É outra forma de desenvolver aplicações Web com Java. • É uma extensão de Servlets. • Tudo que funciona para Servlets funciona para JSP. - Na verdade, JSP é uma Servlet quando está executando. • Trabalha com HTTP requests e responses. Saturday, August 15, 2009
  • 44. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 O que há de errado com Servlets? public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<HEAD><TITLE>Usando Servlets</TITLE></HEAD>"); out.println("<BODY BGCOLOR=#123123>"); //Obtém os nomes dos parâmetros Enumeration parameters = request.getParameterNames(); String param = null; while (parameters.hasMoreElements())‫‏‬ { param = (String) parameters.nextElement(); out.println(param + ": " + request.getParameter(param) + "<BR>"); } out.println("</BODY>"); out.println("</HTML>"); out.close(); } Saturday, August 15, 2009
  • 45. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 JSP vantagens <%@ page import="java.util.Enumeration" %> <HTML> <HEAD><TITLE>Usando JSP</TITLE></HEAD> <BODY BGCOLOR=#DADADA> <% //Obtém os nomes dos parâmetros Enumeration parameters = request.getParameterNames(); String param = null; while (parameters.hasMoreElements())‫‏‬ { param = (String) parameters.nextElement(); out.println(param + ":" + request.getParameter(param) + "<BR>"); } out.close(); %> </BODY> </HTML> Saturday, August 15, 2009
  • 46. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 <%@ page import="capitulo04.NumberGuessBean" %> diretivas <jsp:useBean id="numguess" class="capitulo04.NumberGuessBean" scope="session"/> <jsp:setProperty name="numguess" property="*"/> beans <html> <head><title>Acerte o Número</title></head> <body bgcolor="white"> <font size=4> <% if (numguess.getSuccess()) { scriptlets numguess.reset(); %> Parabéns!Você acertou depois de <%= numguess.getNumGuesses() %> tentativas.<p> <a href="acerteNumero.jsp">Tentar novamente?</a> <% } else if (numguess.getNumGuesses() == 0) { %> Bem Vindo ao jogo para acertar o número.<p> ações <jsp:include page="input.html" flush="true"/> <% } else { %> Tente <b><%= numguess.getHint() %></b>.<br> Já foram feitas <%= numguess.getNumGuesses() %> tentativas.<p> expressões <jsp:include page="input.html" flush="true"/> <% } %> </font> </body> </html> Saturday, August 15, 2009
  • 47. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Elementos de uma página JSP <html> <body> Acerte o número de 1 a 100.<p> <form method=get> Qual o seu palpite? <input type=text name=guess> <input type=submit value="Submit"> </form> </body> </html> input.html Saturday, August 15, 2009
  • 48. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Sintaxe dos elementos de uma JSP • Sempre interpretados no servidor. • Nunca chegam ao clinte. - Cliente só vê HTML! • Scriptlets: <% ... %> • Expressões: <%= ... %> • Declarações: <%! ... %> • Comentários: <%-- ... --%> • Diretivas: <%@ ... %> • Ações: <jsp:ação ... /> • Custom tags: <prefixo:elemento ... /> Saturday, August 15, 2009
  • 49. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 2°/2009 Objetos implícitos Saturday, August 15, 2009
  • 50. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Ciclo de vida de uma JSP Saturday, August 15, 2009
  • 51. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 ? Saturday, August 15, 2009
  • 52. Lato Sensu em Sistemas Orientados a Objetos Q&A MSc. Alexandre Gomes alegomes@gmail.com Saturday, August 15, 2009