You are on page 1of 74

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

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

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.

Visão Geral  Esquema de página WEB dinâmica .

. Actionscript. etc − A interface é alterada com base em eventos do teclado.Visão Geral  Linguagem de cliente − Páginas podem ser dinâmicas utilizando client-side scripting. mouse ou tempo. − São scripts executados no computador do cliente. − Javascript.

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

estado do banco de dados.js). etc. Java (JavaServer Pages). PHP. − ASP.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. CGI. Python (Django). etc . Javascript (Node.

. Sistemas de gerenciamento de conteúdo também usam linguagem de servidor.Visão Geral   Cadastro e autenticação de usuários são exemplos de ações executadas no servidor.

etc. Computadores que requisitam tais recursos são os clientes. −  Páginas WEB. processamento.Arquitetura Cliente-Servidor  Computadores que fornecem recursos/serviços são classificados como servidores. Internet Servidor Clientes . impressoras.

. XML.Arquitetura Cliente-Servidor   O cliente de uma aplicação WEB. CSS. Browsers apenas interpretam linguagem client-side. é um browser (navegador). como HTML. − O servidor apenas retorna dados formatados para o cliente side. em geral. Javascript. etc. o cliente nunca irá vê-la. − Seja qual for a linguagem de servidor.

.Arquitetura Cliente-Servidor O Browser interpreta linguagens como HTML. etc. Javascript.

Javascript. .Arquitetura Cliente-Servidor O Browser interpreta linguagens como HTML. etc.

como o servidor fornece um webapp. O responsável por traduzir as páginas JSP para HTML é o contêiner JSP.Arquitetura Cliente-Servidor    No nosso caso. podemos chamar de servidor WEB ou servidor de aplicação. Exemplos de contêineres JSP: Apache Tomcat Jetty GlassFish .

Arquitetura Cliente-Servidor  Os contêineres recebem as requisições dos clientes e. Ubuntu Servidor HTML Internet OS X Windows 8 Banco de Dados Contêiner Arquivos JSP . então. produzem o HTML correspondente.

bashrc: PATH=/usr/local/jdk1.0/bin: export PATH .7.com/technetwork/pt/java/javase/downloads/index.html  Configurar variáveis de ambiente − Em Linux. basta adicionar o trecho abaixo no arquivo ~/.oracle.Configuração do Java e Tomcat  Download do Java http://www.

cgi   Descompactar o diretório do Tomcat (CATALINA_HOME).Configuração do Java e Tomcat  Download do Tomcat http://tomcat. As aplicações WEB ficam localizadas no diretório WEBAPPS.org/download-70.apache. .

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 .

também funciona como um servidor HTTP. usamos <endereço>:<porta>. Normalmente. O Tomcat.Configuração do Java e Tomcat ● ● ● ● Por padrão. o Tomcat serve os aplicativos WEB pela porta 8080. . Para acessar uma site. além de interpretar as JSPs. vemos o sites servindo as páginas pela porta 80 (padrão) pois eles utilizam o servidor HTTP Apache. – Se a porta for a 80. podemos omiti-la.

Configuração do Java e Tomcat Cliente Servidor Apache na porta 80 Tomcat na porta 8080 Arquivos JSP .

Configuração do Java e Tomcat Cliente Tomcat na porta 8080 Arquivos JSP .

class lib mysql.Estrutura e Configuração da Aplicação MeuApp META-INF context.jar web.xml WEB-INF Classes MyServlet.jsp .xml index.

jar web.Estrutura e Configuração da Aplicação MeuApp META-INF context.xml index.class lib mysql.jsp .xml Caminho de Contexto WEB-INF Classes MyServlet.

xml index.jsp Servlets .class lib mysql.jar web.xml WEB-INF Classes MyServlet.Estrutura e Configuração da Aplicação MeuApp META-INF context.

class lib mysql.xml index.jsp Bibliotecas .xml WEB-INF Classes MyServlet.Estrutura e Configuração da Aplicação MeuApp META-INF context.jar web.

jsp Configurações da aplicação .xml index.xml WEB-INF Classes MyServlet.Estrutura e Configuração da Aplicação MeuApp META-INF context.class lib mysql.jar web.

jsp Páginas WEB (JSP. imagens. etc) .xml index.xml WEB-INF Classes MyServlet.class lib mysql.jar web. HTML.Estrutura e Configuração da Aplicação MeuApp META-INF context.

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 .

xml: <?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/Exemplo1"/> .Estrutura e Configuração da Aplicação ● Exemplo de context.

0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/Exemplo1"/> http://localhost:8080/Exemplo1 .Estrutura e Configuração da Aplicação ● Exemplo de context.xml: <?xml version="1.

xml: <?xml version="1.Estrutura e Configuração da Aplicação ● Exemplo de context.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/Exemplo1"/> Os paths devem ser únicos. .

xml: <?xml version="1.Estrutura e Configuração da Aplicação ● Exemplo de context.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/Exemplo1"/> Os paths devem ser únicos. então a aplicação será a default. Se path for uma string vazia (“”). .

URL's.Estrutura e Configuração da Aplicação ● web. – É um arquivo xml com sintaxe bem intuitiva.xml: – É onde configuramos os servlets. filtros. mas fica complexa quando se tem muitas configurações. e outros parâmetros de configuração. .

xml: – É onde configuramos os servlets. . filtros.Estrutura e Configuração da Aplicação ● web. e outros parâmetros de configuração. – É um arquivo xml com sintaxe bem intuitiva. URL's. Fica mais fácil configurar usando uma IDE. mas fica complexa quando se tem muitas configurações.

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

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.

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

*. public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request. HttpServletResponse response) throws ServletException.*. IOException { } } PrintWriter out = response. import javax.Servlets import java.io.getWriter(). import javax. out.*.servlet.http. .println("Hello World").servlet.

*.io. HttpServletResponse response) throws ServletException.getWriter().*. import javax. Responde às requisições GET .*. import javax.servlet. IOException { } } PrintWriter out = response.Servlets import java. public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request.servlet. out.http.println("Hello World").

*.println("Hello World").servlet. out.getWriter(). IOException { } } PrintWriter out = response.servlet. import javax.http. public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request.Servlets import java.io. import javax.*. HttpServletResponse response) throws ServletException.*. Imprime o conteúdo para o browser .

out. out.println("</html>"). out.println("<h1>Olá Mundo!</h1>").println("</body>"). out.println("<body>").getWriter(). HttpServletResponse response) throws ServletException. out.println("<html>").Servlets ● Imprimindo HTML: public void doGet(HttpServletRequest request. . IOException { } PrintWriter out = response.

println("<h1>Olá Mundo!</h1>"). out.getWriter().println("<body>").println("</html>"). É por isso que usamos JSP para exibir a interface gráfica . out. out. IOException { } PrintWriter out = response.println("</body>").println("<html>"). out. out.Servlets ● Imprimindo HTML: public void doGet(HttpServletRequest request. HttpServletResponse response) throws ServletException.

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

Servlets ● Padrão URL – Caminho para se acessar um servlet. <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> . – Se o padrão for /teste então acessamos o servlet pela url localhost:8080/myapp/teste.

Servlets .

Servlets .

– O servlet deve implementar o método doGet() para poder responder a esses pedidos. – Os parâmetros são enviados pela URL.Servlets ● Método GET – Solicita dados de algum recurso. http://localhost:8080/Exemplo1/Foobar?nome=Afonso&id=25 .

http://localhost:8080/Exemplo1/Foobar?nome=Afonso&id=25 Endereço da aplicação Servlet Parâmetros . – O servlet deve implementar o método doGet() para poder responder a esses pedidos.Servlets ● Método GET – Solicita dados de algum recurso. – Os parâmetros são enviados pela URL.

– 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 .Servlets ● Método GET – Solicita dados de algum recurso.

– Ficam no histórico do browser. – Não deve conter informações sensíveis (ex. . – URLs com GET podem ser favoritadas no browser.: nome e senha de usuário).Servlets ● Método GET – Deve ser utilizado apenas para recuperar dados.

Servlets ● Método POST – Indica que algum processamento deve ser feito sobre os dados enviados.1 Host: ufpa. POST /teste/exemplo. – Os dados são enviados no corpo da mensagem HTTP.jsp HTTP/1.br nome1=valor1&nome2=valor2 .

. – Não ficam no histórico do browser. – É utilizado para enviar os dados do login.Servlets ● Método POST – Não podem ser favoritados no browser.

<% Código Java %> ● ● ● Assim fica mais fácil inserir código Java em HTML. . HTML. etc. Javascript. O código tem que estar legível. Mas lembre-se de que uma página JSP não pode estar inundada de código Java.Sintaxe JSP ● Scriptlet – Contém o código Java comum. CSS.

print(request. %> </p> </body> </html> .getRemoteAddr()).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.

Sintaxe JSP Resultado .

Sintaxe JSP ● Declarações JSP: <%! declarações %> ● Expressões JSP: <%= expressões %> ● Comentários JSP: <%-.comentários --%> ● Diretivas JSP: <%@ diretiva atributo=valor %> .

<%! int a. c. b. %> <%! void metodo(){ … } %> .Sintaxe JSP ● Declarações JSP: – Declara uma ou mais variáveis ou métodos para serem usados por toda a página.

– A String é inserida onde a expressão aparece. <p> Olá Mundo! <br> O seu endereço IP é <%= request. – Pense como se fosse um “print”.getRemoteAddr() %> </p> .Sintaxe JSP ● Expressões JSP: – Avalia uma expressão e a converte para uma String.

getRemoteAddr() %> </p> Sem ponto-e-vírgula! . – Pense como se fosse um “print”. – A String é inserida onde a expressão aparece.Sintaxe JSP ● Expressões JSP: – Avalia uma expressão e a converte para uma String. <p> Olá Mundo! <br> O seu endereço IP é <%= request.

FIM DA PRIMEIRA PARTE .

<%@ diretiva atributo=valor %> . Por padrão. Essas ações são feitas durante o processo de tradução da JSP. escrevemos as diretivas no topo da página JSP.Diretivas JSP ● ● ● Indicam ao contêiner como realizar determinadas ações durante a criação da página JSP.

Diretivas JSP ● Diretiva page: – Especificam características que se aplicam à JSP inteira. – Exemplo: <%@page contentType="text/html" pageEncoding="UTF-8"%> .

Diretivas JSP ● Diretiva page: – Atributo contentType ● Especifica o MIME (Multipurpose Internet Mail Extensions) da página. <%@page contentType="text/html"%> .

<%@page import="java. ou um pacote inteiro. interfaces.Diretivas JSP ● Diretiva page: – Atributo import ● Utilize para importar classes.Date"%> .util.

jsp"%> . <%@page errorPage="pagina-erro.Diretivas JSP ● Diretiva page: – Atributo errorPage ● Especifica qual página exibir caso alguma exceção seja lançada.

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

Diretivas JSP ● Diretiva include: – É utilizada para adicionar um arquivo durante a fase de tradução da JSP. <%@ include file="url relativa" > .

Sessões ● ● ● Como o HTTP é um protocolo que não armazena estado. de modo que o servidor não tem como identificar que é o mesmo cliente. . sempre que o cliente se conecta a uma página da aplicação. uma nova conexão é feita. Campos de formulários ocultos <input type="hidden" name="sessionid" value="12345"> ● URL rewriting – Inclui a ID da sessão na própria URL. – Nem todos os browsers suportam cookies. Cookies – O servidor mantém um ID único do cliente no formato de cookie.

● Também são conhecidas como variáveis pré-definidas. ● Existem nove objetos implícitos nas JSPs. .Objetos implícitos ● Objetos implícitos são objetos Java disponíveis em todas as páginas JSP sem ser declaradas.

application Objeto ServletContext relacionado com o contexto da aplicação. page Sinônimo para this. Exception Acesso às informações da execeção. session Objeto HttpSession relacionado com a sessão do usuário. out Objeto PrintWriter usado para enviar a saída para o cliente. . config Configuração da página.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. pageContext Encapsula características específicas do servidor como JspWriters de alta performance.

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

criptografia. conversão de imagens. etc. Manipulam respostas dos servlets antes de enviá-las aos clientes. As configurações dos filtros são armazenadas no arquivo web. Utilizados para autenticação.Filtros ● ● ● ● Interceptam requisições do clientes antes de serem processados pelos servlets. . logging. compressão de dados.xml.

getRequestDispatcher("teste. embora a JSP seja outra.Redirecionamentos ● Redireciona o fluxo para outra página.jsp"). RequestDispatcher rd = request. rd. response). . ● Não altera a url.forward(request.

● ● Permite que pessoas sem muito conhecimento de Java manipulem páginas JSP. Sintaxe: ${expressão} . ● Sintaxe mais simples.Expression Language ● Facilita o acesso aos dados de objetos.

redirecionamento. .Conclusão ● ● ● Vimos como construir os elementos básicos de uma aplicação web. entre outros. Noção de MVC (Model-View-Controller). padronização. Autenticação.