74
III Semana Acadêmica da FACOMP Introdução ao Desenvolvimento de Introdução ao Desenvolvimento de Aplicações WEB com JSP Aplicações WEB com JSP Manoel Afonso Pereira de Lima Filho [email protected] 04 e 05 de Novembro de 2013

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

Embed Size (px)

DESCRIPTION

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.

Citation preview

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

III Semana Acadêmica da FACOMP

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

Manoel Afonso Pereira de Lima [email protected]

04 e 05 de Novembro de 2013

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

Ementa

Visão Geral

Arquitetura Cliente-Servidor

Configuração do Java e Tomcat

Estrutura e configuração da aplicação

Servlets

Sintaxe JSP

Diretivas JSP

Objetos implícitos

Processamento de fomulários

Filtros

Sessões

Redirecionamentos

Expression Language

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

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.

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

Visão Geral

Esquema de página WEB dinâmica

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

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.

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

Visão Geral

Validação de formulários e Design Responsivo são exemplos de client-side scripting.

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

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

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

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.

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

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.

Clientes

Servidor

Internet

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

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.

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

Arquitetura Cliente-Servidor

O Browser interpreta linguagens como HTML, Javascript, etc.

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

Arquitetura Cliente-Servidor

O Browser interpreta linguagens como HTML, Javascript, etc.

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

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

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

Arquitetura Cliente-Servidor

Os contêineres recebem as requisições dos clientes e, então, produzem o HTML correspondente.

Servidor

Internet

Ubuntu

OS X

Windows 8

Arquivos JSPBanco de Dados Contêiner

HTML

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

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

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

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.

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

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

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

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.

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

Configuração do Java e Tomcat

Arquivos JSP

Tomcat na porta 8080Servidor Apache

na porta 80Cliente

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

Configuração do Java e Tomcat

Arquivos JSP

Tomcat na porta 8080Cliente

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

Estrutura e Configuração da Aplicação

MeuApp

WEB-INF

Classes

lib

MyServlet.class

mysql.jar

web.xml

index.jsp

META-INF

context.xml

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

Estrutura e Configuração da Aplicação

MeuApp

WEB-INF

Classes

lib

MyServlet.class

mysql.jar

web.xml

index.jsp

META-INF

context.xmlCaminho de Contexto

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

Estrutura e Configuração da Aplicação

MeuApp

WEB-INF

Classes

lib

MyServlet.class

mysql.jar

web.xml

index.jsp

META-INF

context.xml

Servlets

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

Estrutura e Configuração da Aplicação

MeuApp

WEB-INF

Classes

lib

MyServlet.class

mysql.jar

web.xml

index.jsp

META-INF

context.xml

Bibliotecas

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

Estrutura e Configuração da Aplicação

MeuApp

WEB-INF

Classes

lib

MyServlet.class

mysql.jar

web.xml

index.jsp

META-INF

context.xml

Configurações da aplicação

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

Estrutura e Configuração da Aplicação

MeuApp

WEB-INF

Classes

lib

MyServlet.class

mysql.jar

web.xml

index.jsp

META-INF

context.xml

Páginas WEB (JSP, HTML, imagens, etc)

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

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.

localhost:8080/exemplo

localhost:8080/myapp

localhost:8080/teste

localhost:8080/helloworld

Catalina_home

WEBAPPS

exemplo

myapp

teste

helloworld

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

Estrutura e Configuração da Aplicação

● Exemplo de context.xml:

<?xml version="1.0" encoding="UTF-8"?><Context antiJARLocking="true" path="/Exemplo1"/>

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

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

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

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.

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

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.

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

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.

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

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.

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

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).

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

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.

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

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"); }}

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

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"); }}

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

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

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

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

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

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>");}

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

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

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

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.

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

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>

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

Servlets

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

Servlets

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

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

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

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

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

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: nome idValor: Afonso 25

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

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.

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

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.1Host: ufpa.brnome1=valor1&nome2=valor2

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

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.

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

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.

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

Sintaxe 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>

Exemplo de página JSP

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

Sintaxe JSP

Resultado

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

Sintaxe JSP

● Declarações JSP:

<%! declarações %>

● Expressões JSP:

<%= expressões %>

● Comentários JSP:

<%-- comentários --%>

● Diretivas JSP:

<%@ diretiva atributo=valor %>

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

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(){

…}

%>

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

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>

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

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!

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

FIM DA PRIMEIRA PARTE

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

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 %>

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

Diretivas JSP

● Diretiva page:

– Especificam características que se aplicam à JSP inteira.

– Exemplo:

<%@page contentType="text/html" pageEncoding="UTF-8"%>

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

Diretivas JSP

● Diretiva page:

– Atributo contentType

● Especifica o MIME (Multipurpose Internet Mail Extensions) da página.

<%@page contentType="text/html"%>

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

Diretivas JSP

● Diretiva page:

– Atributo import

● Utilize para importar classes, interfaces, ou um pacote inteiro.

<%@page import="java.util.Date"%>

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

Diretivas JSP

● Diretiva page:

– Atributo errorPage

● Especifica qual página exibir caso alguma exceção seja lançada.

<%@page errorPage="pagina-erro.jsp"%>

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

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"%>

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

Diretivas JSP

● Diretiva include:

– É utilizada para adicionar um arquivo durante a fase de tradução da JSP.

<%@ include file="url relativa" >

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

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.

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

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.

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

Objetos implícitos

Objeto Descrição

requestRepresenta o objeto HttpServletRequest associado com a requisição do cliente.

responseRepresenta 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.

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

Processamento de Formulários

● Basicamente, fazem uso conjunto de vários objetos implícitos.

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

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.

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

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);

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

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}

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

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).