Introdução ao Desenvolvimento de aplicações WEB com JSP
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Introdução ao Desenvolvimento de aplicações WEB com JSP

  • 1,130 views
Uploaded on

Slides do minicurso "Introdução ao Desenvolvimento de aplicações WEB com JSP" apresentado na Universidade Federal do Pará nos dias 4 e 5 de novembro de 2013 durante a III Semana Acadêmica da ...

Slides do minicurso "Introdução ao Desenvolvimento de aplicações WEB com JSP" apresentado na Universidade Federal do Pará nos dias 4 e 5 de novembro de 2013 durante a III Semana Acadêmica da FACOMP.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,130
On Slideshare
1,124
From Embeds
6
Number of Embeds
1

Actions

Shares
Downloads
51
Comments
0
Likes
1

Embeds 6

http://localhost 6

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. III Semana Acadêmica da FACOMP Introdução ao Desenvolvimento de Aplicações WEB com JSP Manoel Afonso Pereira de Lima Filho manoel.lima@icen.ufpa.br 04 e 05 de Novembro de 2013
  • 2. Ementa  Visão Geral  Diretivas JSP  Arquitetura Cliente-Servidor  Objetos implícitos     Configuração do Java e Tomcat Estrutura e configuração da aplicação  Processamento de fomulários  Filtros  Sessões Servlets  Redirecionamentos Sintaxe JSP  Expression Language
  • 3. Visão Geral     JavaServer Pages (JSP) é uma tecnologia utilizada para o desenvolvimento de páginas WEB dinâmicas. Baseia-se em HTML, XML e outros tipos de documentos para WEB. Simular a PHP, mas utiliza Java como linguagem de programação. Permite a criação de aplicativos WEB simples, como coleta de dados do usuário, até as mais complexas, como gerenciamento extensivo de dados.
  • 4. Visão Geral  Esquema de página WEB dinâmica
  • 5. Visão Geral  Linguagem de cliente − Páginas podem ser dinâmicas utilizando client-side scripting. − São scripts executados no computador do cliente. − Javascript, Actionscript, etc − A interface é alterada com base em eventos do teclado, mouse ou tempo.
  • 6. Visão Geral  Validação de formulários e Design Responsivo são exemplos de client-side scripting.
  • 7. Visão Geral  Linguagem de Servidor − Programas são executados no computador servidor. − Produzem as páginas WEB de acordo com os parâmetros fornecidos, estado do banco de dados, etc. − ASP, CGI, Java (JavaServer Pages), Javascript (Node.js), PHP, Python (Django), etc
  • 8. Visão Geral   Cadastro e autenticação de usuários são exemplos de ações executadas no servidor. Sistemas de gerenciamento de conteúdo também usam linguagem de servidor.
  • 9. Arquitetura Cliente-Servidor  Computadores que fornecem recursos/serviços são classificados como servidores. −  Páginas WEB, impressoras, processamento, etc. Computadores que requisitam tais recursos são os clientes. Internet Servidor Clientes
  • 10. Arquitetura Cliente-Servidor   O cliente de uma aplicação WEB, em geral, é um browser (navegador). Browsers apenas interpretam linguagem client-side. − Seja qual for a linguagem de servidor, o cliente nunca irá vê-la. − O servidor apenas retorna dados formatados para o cliente side, como HTML, Javascript, CSS, XML, etc.
  • 11. Arquitetura Cliente-Servidor O Browser interpreta linguagens como HTML, Javascript, etc.
  • 12. Arquitetura Cliente-Servidor O Browser interpreta linguagens como HTML, Javascript, etc.
  • 13. Arquitetura Cliente-Servidor    No nosso caso, como o servidor fornece um webapp, podemos chamar de servidor WEB ou servidor de aplicação. O responsável por traduzir as páginas JSP para HTML é o contêiner JSP. Exemplos de contêineres JSP: Apache Tomcat Jetty GlassFish
  • 14. Arquitetura Cliente-Servidor  Os contêineres recebem as requisições dos clientes e, então, produzem o HTML correspondente. Ubuntu Servidor HTML Internet OS X Windows 8 Banco de Dados Contêiner Arquivos JSP
  • 15. Configuração do Java e Tomcat  Download do Java http://www.oracle.com/technetwork/pt/java/javase/downloads/index.html  Configurar variáveis de ambiente − Em Linux, basta adicionar o trecho abaixo no arquivo ~/.bashrc: PATH=/usr/local/jdk1.7.0/bin: export PATH
  • 16. Configuração do Java e Tomcat  Download do Tomcat http://tomcat.apache.org/download-70.cgi   Descompactar o diretório do Tomcat (CATALINA_HOME). As aplicações WEB ficam localizadas no diretório WEBAPPS.
  • 17. Configuração do Java e Tomcat PORTAS COMUNS Porta Aplicação 20/21 FTP 22 SSH 23 Telnet 43 WhoIS 25 Simple Mail Transfer Protocol (SMTP) 53 Domain Name System (DNS) 80 HTTP 443 HTTPS 8080 Tomcat
  • 18. Configuração do Java e Tomcat ● ● ● ● Por padrão, o Tomcat serve os aplicativos WEB pela porta 8080. Normalmente, vemos o sites servindo as páginas pela porta 80 (padrão) pois eles utilizam o servidor HTTP Apache. O Tomcat, além de interpretar as JSPs, também funciona como um servidor HTTP. Para acessar uma site, usamos <endereço>:<porta>. – Se a porta for a 80, podemos omiti-la.
  • 19. Configuração do Java e Tomcat Cliente Servidor Apache na porta 80 Tomcat na porta 8080 Arquivos JSP
  • 20. Configuração do Java e Tomcat Cliente Tomcat na porta 8080 Arquivos JSP
  • 21. Estrutura e Configuração da Aplicação MeuApp META-INF context.xml WEB-INF Classes MyServlet.class lib mysql.jar web.xml index.jsp
  • 22. Estrutura e Configuração da Aplicação MeuApp META-INF context.xml Caminho de Contexto WEB-INF Classes MyServlet.class lib mysql.jar web.xml index.jsp
  • 23. Estrutura e Configuração da Aplicação MeuApp META-INF context.xml WEB-INF Classes MyServlet.class lib mysql.jar web.xml index.jsp Servlets
  • 24. Estrutura e Configuração da Aplicação MeuApp META-INF context.xml WEB-INF Classes MyServlet.class lib mysql.jar web.xml index.jsp Bibliotecas
  • 25. Estrutura e Configuração da Aplicação MeuApp META-INF context.xml WEB-INF Classes MyServlet.class lib mysql.jar web.xml index.jsp Configurações da aplicação
  • 26. Estrutura e Configuração da Aplicação MeuApp META-INF context.xml WEB-INF Classes MyServlet.class lib mysql.jar web.xml index.jsp Páginas WEB (JSP, HTML, imagens, etc)
  • 27. Estrutura e Configuração da Aplicação ● Caminho de Contexto: – É um arquivo XML (context.xml) que indica ao contêiner onde localizar os recursos em relação à raiz. Catalina_home localhost:8080/exemplo localhost:8080/myapp WEBAPPS exemplo localhost:8080/teste myapp localhost:8080/helloworld teste helloworld
  • 28. Estrutura e Configuração da Aplicação ● Exemplo de context.xml: <?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/Exemplo1"/>
  • 29. Estrutura e Configuração da Aplicação ● Exemplo de context.xml: <?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/Exemplo1"/> http://localhost:8080/Exemplo1
  • 30. Estrutura e Configuração da Aplicação ● Exemplo de context.xml: <?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/Exemplo1"/> Os paths devem ser únicos.
  • 31. Estrutura e Configuração da Aplicação ● Exemplo de context.xml: <?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/Exemplo1"/> Os paths devem ser únicos. Se path for uma string vazia (“”), então a aplicação será a default.
  • 32. Estrutura e Configuração da Aplicação ● web.xml: – É onde configuramos os servlets, filtros, URL's, e outros parâmetros de configuração. – É um arquivo xml com sintaxe bem intuitiva, mas fica complexa quando se tem muitas configurações.
  • 33. Estrutura e Configuração da Aplicação ● web.xml: – É onde configuramos os servlets, filtros, URL's, e outros parâmetros de configuração. – É um arquivo xml com sintaxe bem intuitiva, mas fica complexa quando se tem muitas configurações. Fica mais fácil configurar usando uma IDE.
  • 34. Servlets ● São classes Java usadas para prover funcionalidades de servidor. ● Respondem às requisições dos clientes. ● Geralmente usados para: – Processar/armazenar dados de formulários HTML. – Fornecer conteúdo dinâmico. – Gerenciar o estado da informação (o que não existe no protocolo HTTP).
  • 35. Servlets ● ● As páginas JSP podem ser vistas como abstrações do servlet. Durante a execução da aplicação WEB, os arquivos JSP são traduzidos para servlets. – Utiliza cache até que a JSP seja alterada.
  • 36. Servlets import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } PrintWriter out = response.getWriter(); out.println("Hello World");
  • 37. Servlets import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } PrintWriter out = response.getWriter(); out.println("Hello World");
  • 38. Servlets import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } PrintWriter out = response.getWriter(); out.println("Hello World"); Responde às requisições GET
  • 39. Servlets import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } PrintWriter out = response.getWriter(); out.println("Hello World"); Imprime o conteúdo para o browser
  • 40. Servlets ● Imprimindo HTML: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>"); out.println("<h1>Olá Mundo!</h1>"); out.println("</body>"); out.println("</html>");
  • 41. Servlets ● Imprimindo HTML: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>"); out.println("<h1>Olá Mundo!</h1>"); out.println("</body>"); out.println("</html>"); É por isso que usamos JSP para exibir a interface gráfica
  • 42. Servlets ● Padrão URL – Caminho para se acessar um servlet. – Se o padrão for /teste então acessamos o servlet pela url localhost:8080/myapp/teste.
  • 43. Servlets ● Padrão URL – Caminho para se acessar um servlet. – Se o padrão for /teste então acessamos o servlet pela url localhost:8080/myapp/teste. <servlet> <servlet-name>Foobar</servlet-name> <servlet-class>exemplo.Foobar</servlet-class> </servlet> <servlet-mapping> <servlet-name>Foobar</servlet-name> <url-pattern>/Foobar</url-pattern> </servlet-mapping>
  • 44. Servlets
  • 45. Servlets
  • 46. Servlets ● Método GET – Solicita dados de algum recurso. – O servlet deve implementar o método doGet() para poder responder a esses pedidos. – Os parâmetros são enviados pela URL. http://localhost:8080/Exemplo1/Foobar?nome=Afonso&id=25
  • 47. Servlets ● Método GET – Solicita dados de algum recurso. – O servlet deve implementar o método doGet() para poder responder a esses pedidos. – Os parâmetros são enviados pela URL. http://localhost:8080/Exemplo1/Foobar?nome=Afonso&id=25 Endereço da aplicação Servlet Parâmetros
  • 48. Servlets ● Método GET – Solicita dados de algum recurso. – O servlet deve implementar o método doGet() para poder responder a esses pedidos. – Os parâmetros são enviados pela URL. http://localhost:8080/Exemplo1/Foobar?nome=Afonso&id=25 Chave: Valor: nome Afonso id 25
  • 49. Servlets ● Método GET – Deve ser utilizado apenas para recuperar dados. – Não deve conter informações sensíveis (ex.: nome e senha de usuário). – URLs com GET podem ser favoritadas no browser. – Ficam no histórico do browser.
  • 50. Servlets ● Método POST – Indica que algum processamento deve ser feito sobre os dados enviados. – Os dados são enviados no corpo da mensagem HTTP. POST /teste/exemplo.jsp HTTP/1.1 Host: ufpa.br nome1=valor1&nome2=valor2
  • 51. Servlets ● Método POST – Não podem ser favoritados no browser. – Não ficam no histórico do browser. – É utilizado para enviar os dados do login.
  • 52. Sintaxe JSP ● Scriptlet – Contém o código Java comum. <% Código Java %> ● ● ● Assim fica mais fácil inserir código Java em HTML. Mas lembre-se de que uma página JSP não pode estar inundada de código Java, HTML, CSS, Javascript, etc. O código tem que estar legível.
  • 53. Sintaxe JSP Exemplo de página JSP <!DOCTYPE html> <html> <head> <title>Exemplo 1</title> </head> <body> <p> Olá Mundo! <br> O seu endereço IP é <% out.print(request.getRemoteAddr()); %> </p> </body> </html>
  • 54. Sintaxe JSP Resultado
  • 55. Sintaxe JSP ● Declarações JSP: <%! declarações %> ● Expressões JSP: <%= expressões %> ● Comentários JSP: <%-- comentários --%> ● Diretivas JSP: <%@ diretiva atributo=valor %>
  • 56. Sintaxe JSP ● Declarações JSP: – Declara uma ou mais variáveis ou métodos para serem usados por toda a página. <%! int a, b, c; %> <%! void metodo(){ … } %>
  • 57. Sintaxe JSP ● Expressões JSP: – Avalia uma expressão e a converte para uma String. – A String é inserida onde a expressão aparece. – Pense como se fosse um “print”. <p> Olá Mundo! <br> O seu endereço IP é <%= request.getRemoteAddr() %> </p>
  • 58. Sintaxe JSP ● Expressões JSP: – Avalia uma expressão e a converte para uma String. – A String é inserida onde a expressão aparece. – Pense como se fosse um “print”. <p> Olá Mundo! <br> O seu endereço IP é <%= request.getRemoteAddr() %> </p> Sem ponto-e-vírgula!
  • 59. FIM DA PRIMEIRA PARTE
  • 60. Diretivas JSP ● ● ● Indicam ao contêiner como realizar determinadas ações durante a criação da página JSP. Essas ações são feitas durante o processo de tradução da JSP. Por padrão, escrevemos as diretivas no topo da página JSP. <%@ diretiva atributo=valor %>
  • 61. Diretivas JSP ● Diretiva page: – Especificam características que se aplicam à JSP inteira. – Exemplo: <%@page contentType="text/html" pageEncoding="UTF-8"%>
  • 62. Diretivas JSP ● Diretiva page: – Atributo contentType ● Especifica o MIME (Multipurpose Internet Mail Extensions) da página. <%@page contentType="text/html"%>
  • 63. Diretivas JSP ● Diretiva page: – Atributo import ● Utilize para importar classes, interfaces, ou um pacote inteiro. <%@page import="java.util.Date"%>
  • 64. Diretivas JSP ● Diretiva page: – Atributo errorPage ● Especifica qual página exibir caso alguma exceção seja lançada. <%@page errorPage="pagina-erro.jsp"%>
  • 65. Diretivas JSP ● Diretiva page: – Atributo isErrorPage ● Página a ser exibida caso uma exceção seja lançada por uma outra JSP. <%@page isErrorPage="true"%>
  • 66. Diretivas JSP ● Diretiva include: – É utilizada para adicionar um arquivo durante a fase de tradução da JSP. <%@ include file="url relativa" >
  • 67. Sessões ● ● Como o HTTP é um protocolo que não armazena estado, sempre que o cliente se conecta a uma página da aplicação, uma nova conexão é feita, de modo que o servidor não tem como identificar que é o mesmo cliente. Cookies – – ● O servidor mantém um ID único do cliente no formato de cookie. Nem todos os browsers suportam cookies. Campos de formulários ocultos <input type="hidden" name="sessionid" value="12345"> ● URL rewriting – Inclui a ID da sessão na própria URL.
  • 68. Objetos implícitos ● Objetos implícitos são objetos Java disponíveis em todas as páginas JSP sem ser declaradas. ● Também são conhecidas como variáveis pré-definidas. ● Existem nove objetos implícitos nas JSPs.
  • 69. Objetos implícitos Objeto Descrição request Representa o objeto HttpServletRequest associado com a requisição do cliente. response Representa o objeto HttpServletResponse associado com a resposta ao cliente. out Objeto PrintWriter usado para enviar a saída para o cliente. session Objeto HttpSession relacionado com a sessão do usuário. application Objeto ServletContext relacionado com o contexto da aplicação. config Configuração da página. pageContext Encapsula características específicas do servidor como JspWriters de alta performance. page Sinônimo para this. Exception Acesso às informações da execeção.
  • 70. Processamento de Formulários ● Basicamente, fazem uso conjunto de vários objetos implícitos.
  • 71. Filtros ● ● ● ● Interceptam requisições do clientes antes de serem processados pelos servlets. Manipulam respostas dos servlets antes de enviá-las aos clientes. Utilizados para autenticação, compressão de dados, criptografia, conversão de imagens, logging, etc. As configurações dos filtros são armazenadas no arquivo web.xml.
  • 72. Redirecionamentos ● Redireciona o fluxo para outra página. ● Não altera a url, embora a JSP seja outra. RequestDispatcher rd = request.getRequestDispatcher("teste.jsp"); rd.forward(request, response);
  • 73. Expression Language ● Facilita o acesso aos dados de objetos. ● Sintaxe mais simples. ● ● Permite que pessoas sem muito conhecimento de Java manipulem páginas JSP. Sintaxe: ${expressão}
  • 74. Conclusão ● ● ● Vimos como construir os elementos básicos de uma aplicação web. Autenticação, redirecionamento, padronização, entre outros. Noção de MVC (Model-View-Controller).