Desenvolvimento de aplicações Web. Java Server Pages



Documentos relacionados
Desenvolvimento Web TCC Turma A-1

UNIDADE III JAVA SERVER PAGES

Java II. Sérgio Luiz Ruivace Cerqueira

JSP - JavaServer Pages

Programação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets

Relatório referente a compreensão da programação JSP. Realizado do dia de 22 abril de 2010 a 03 de maio de 2010.

Tecnologias Web. Formulários HTML

LINGUAGEM DE PROGRAMAÇÃO WEB

Scriptlets e Formulários

TECNOLOGIAS WEB. Unidade 2 Introdução a Construção de Páginas Estáticas. Luiz Leão luizleao@gmail.com

JSP (Java Server Pages)

HTML Básico Formulários. Matheus Meira

HTML. Sessão 8 HTML. Criação de Páginas WEB. Formulários

Para o envio de s pelo PHP é necessário seguir a seguinte sintaxe:

Programação WEB II. Formulários Em PHP. Métodos GET e POST progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais

Incorporando JavaScript em HTML

Java na WEB Componentes Bean

Introdução. Servlet. Ciclo Vida. Servlet. Exemplos. Prof. Enzo Seraphim

Introdução a JavaServer Pages. Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Desenvolvimento de sistemas web

Introdução ao PHP. Prof. Késsia Marchi

Linguagem de. Aula 06. Profa Cristiane Koehler

JavaServer Pages. Também são conhecidas pela sigla correspondente (JSP). Representam mais uma tecnologia da plataforma JEE.

Java Beans e Servlets

Sessões. Cookies HTTP Sessões Atributos de sessão

Enviado dados para o PHP através de formulário

Aula de JavaScript 05/03/10

Introdução a Servlets e JSP. Prof. Samuel Martins samuellunamartins at gmail dot com Faculdade São Miguel

Desenvolvimento em Ambiente Web. HTML - Introdução

Desenvolvimento OO com Java Orientação a objetos básica

Programação Na Web. Sessão II. Índice. Visão geral da API Sessão. Obter dados sobre uma sessão. Extrair informação sobre uma Sessão

Programação WEB II. Conhecendo o PHP. Prof: Kelly E. Medeiros Bacharel em Sistema de Informação. Módulo III

Web. Professor: Rodrigo Alves Sarmento

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Inserindo e Listando registros

Java para Desenvolvimento Web

Java Server Pages. O código HTML pode indicar o método de arranque do servlet gerado por um JSP : doget ou dopost.

Java II. Sérgio Luiz Ruivace Cerqueira

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Programação de Servidores CST Redes de Computadores

Iniciando PHP. Agenda

Programação Na Web. Servlets: Como usar as Servlets. Agenda. Template genérico para criar Servlets Servlet 2.4 API

Aplicações de Linguagem de Programação Orientada a Objeto

!" # # # $ %!" " & ' ( 2

JavaServer Pages (JSP) Leonardo Gresta Paulino Murta

Prova de pré-requisito

JSP - ORIENTADO A OBJETOS

" # $ %&'( ) *' ( +,)+ ( - $ (+*' 0 12 ' ( %+ -12 )+3 ) (4 )) ) % 12 ) *' (

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web:

Análise de Programação

Algoritmos e Programação II. Sobrecarga

Tecnologia WEB II. Prof. Erwin Alexander Uhlmann. Introdução ao PHP. UHLMANN, Erwin Alexander. Introdução ao PHP. Instituto Siegen. Guarulhos, 2012.

Mais sobre uso de formulários Site sem Ajax

Tutorial Moodle ESDM - professores

Objetos Implícitos. Conceito. Instanciados pelo próprio contêiner. Disponíveis em quaisquer páginas JSP.

Programação para web JavaScript

Programação para Internet II

Documentação Usando o Javadoc

Servlets, JSPs e Java Beans

Listando, gravando, alterando e excluindo registro do banco de dados com JSP

Exercícios de Revisão Java Básico

Personal Home Page PHP. Prof. Luiz Claudio F. de Souza

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Trabalho 3: Agenda de Tarefas

Calculador de preços e prazos de encomendas

JavaScript (ou JScript)

WEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br Escola CDI de Videira

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos

Aula 12: Funções. Pré-requisitos: Todas as aulas anteriores deste módulo. 1. Aproveitando Códigos no Programa

Java para Desenvolvimento Web

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

Associação Carioca de Ensino Superior Centro Universitário Carioca

Gerador de código JSP baseado em projeto de banco de dados MySQL

Cálculo Remoto de Preços e Prazos de Encomendas

Programação por Objectos. Java

Tecnologias Web. Java Enterprise Edition

Java para WEB. Servlets

HTML Página 1. Índice


Introdução. Introdução a HTML. A Linguagem HTML. Estrutura de uma Página. Mário Antonio Meireles Teixeira

1 Funções básicas de implementação de arquivos

UML Aspectos de projetos em Diagramas de classes

PROJETO FRAMEWORK - CELEPAR PAGINAÇÃO DE DADOS EM APLICAÇÕES JAVA PARA INTERNET

COMO FUNCIONA UM FORMULÁRIO

FBV - Linguagem de Programação II. Um pouco sobre Java

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

JSP: JAVA SERVER PAGES

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

insfcanceof new public switch transient while byte continue extends for int null

Web Design Aula 11: XHTML

Encapsulamento de Dados

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007

Pró-Reitoria de Administração - PRAd Assessoria de Informática - AI SISTEMA DE PUBLICAÇÃO DE LICITAÇÕES. Manual de Procedimentos

Estruturas de Controlo While For Include Array Listas Popularização das Bases de Dados...

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Executando comandos do Sistema Operacional em uma aplicação WEB Java

Transcrição:

Desenvolvimento de aplicações Web Java Server Pages Hamilton Lima - athanazio@pobox.com 2003

Como funciona? Servidor web 2 Internet 1 Browser 3 Arquivo jsp 4 JSP Compilado 2

Passo a passo 1 browser envia requisição ao servidor http://servidor:8080/projeto/login.jsp 2 servidor recebe requisição Verifica se o contexto projeto existe 3 procura pelo arquivo solicitado Procura pelo arquivo login.jsp 4 verifica se já foi compilado Caso não tenha sido compila Executa o arquivo e transmite resposta ao browser 3

O que retorna... O que retorna do servidor para o browser na maioria dos casos é HTML mas podemos retornar qualquer conteúdo imagens, arquivos pdf, planilhas, textos, ou qualquer conteúdo desejado qualquer conteúdo Protocolo HTTP 4

Como funciona o JSP Java Server Pages, permite mesclar HTML e código Java, fazendo com que o código Java inserido seja executado no servidor. <html><body> <h3>pagina de Teste</h3> <% String nome = request.getparameter( nome ); if( nome == null ){ %>Nenhum nome foi informado<% } else { %>O nome informado é <b><%= nome %></b> <hr> </body> </html> 5

Primeiro exemplo <html><body> <h3>pagina de Teste</h3> <% String nome = request.getparameter( nome ); if( nome == null ){ %>Nenhum nome foi informado<% } else { %>O nome informado é <b><%= nome %></b> <hr> </body> </html> O texto em verde é html, os trechos em azul são código Java inserido no html 6

Mesclando html com java Arquivo JSP Retorno HTML JAVA HTML Executa! HTML HTML HTML 7

Elementos de JSP Scriplets Expressões Variáveis pré-definidas Tratando requisições Mantendo dados entre páginas Declarações Diretivas de página Javabeans 8

Scriplets Scriplets, são trechos de código java iniciados por <% e terminados por %> Neles escrevemos o código que será executado no servidor Todas instruções devem ser terminadas com ponto e virgula Quando houverem estruturas de controle que possuem bloco, for, while, if ou outras os blocos podem iniciar em uma parte da tag do scriplet e terminar em outra 9

Scriplet com bloco <html><body> <h3>caixa de selecao</h3> <form method= POST > <select name= numero > <% for( int n = 0; n < 10; n ++ ){ %> <option><%= n +1 %></option> <% } %> </select> </form> </body> </html> Início do bloco do for em um scriplet Fim do bloco do for em outro scriplet 10

Gerando html no codigo <html><body> <h3>pagina da margarida</h3> <% if (Math.random() < 0.5) { out.println("<b>bem</b> me quer"); } else { out.println("<b>mal</b> me quer"); } %> </body> </html> Trechos de html também podem gerados no código Java usando os métodos print( ) ou println( ) do objeto já instanciado out 11

Expressões Uma expressão em JSP inicia com <%= e termina com %> Não possue ponto e virgula no final É executada quando a página é chamada, ou seja em tempo de execução Transforma o resultado de uma expressão Java válida em String e exibe na posição indicada Funciona semelhanto ao out.println( ) 12

Exemplos de expressões <%= (int)(math.random( ) * 10) %> numero randomico entre 0 e 10 <%= request.getparameter( nome ) %> parametro nome recebido pela pagina <%= nome == null? : nome.trim() %> conteudo da variavel String nome (previamente declarada) se for nulo exibirá caso contrário exibirá o conteúdo da veriável sem espaços em branco antes e depois 13

Variáveis pré-definidas request requisições recebidas do cliente response objeto com a resposta a ser enviada ao cliente out permite adicionar conteúdo na resposta a ser enviada ao cliente session mantém dados entre as páginas de uma mesmo browser aberto application mantém dados disponíveis para todas as sessões abertas 14

request Request, objeto do tipo HttpServletRequest que oferece por exemplo os seguintes métodos getparameter( nome ) - onde uma informação submetida para a página pode ser recuperada getattribute( nome ) - onde um objeto pode ser atribuido ao request antes de repassa-lo a outra página 15

Request exemplo <html><body> <h3>pagina de Teste</h3> <% String nome = request.getparameter( nome ); if( nome == null ){ %>Nenhum nome foi informado<% } else { %>O nome informado é <b><%= nome %></b> <hr> </body> </html> O parametro nome pode ter sido enviado através de um um formulário ou através de um link 16

envio de dados - POST POST envio dos dados através de um formulário HTML onde o atributo method do formulário é igual a POST para cada objeto contido no formulário será criado um parâmetro a ser recuperado pelo metodo getparameter() do objeto request Não existe limite de atributos a serem enviados através do método POST É o mais comum a ser usado em formulários 17

envio de dados - GET Os dados são enviados junto do endereço da página, normalmente é usado em links, podendo também ser usado para formulários, alterando o atributo method do form Usa o seguinte formato: http://host/pagina.jsp?var_1=valor_1&var_n=valor_n http://localhost:8080/teste/pagina.jsp?nome=joao A? separa a pagina dos parametros e cada parametro é separado por um & 18

mantendo dados entre as páginas Por diversas vezes precisamos manter um conjunto de informações disponíveis entre páginas, visto que cada página é executada do início ao fim sem se manter na memória, algumas estratégias são indicadas para manter os dados entre páginas Re-escrita de url Uso da sessão Input hidden 19

exemplo de fluxo Página de login informa usuário Dados pessoais do usuário alteração consulta alteração Servidor web Consulta agenda do usuário consulta alteração sessão usuário 20

re-escrita de URL Todo link envolvido no fluxo da aplicação passa a receber como parâmetros informações que devem passar de página em página Se deseja passar por exemplo o código de um produto passar a adicionar em toda URL produto=codigo http://localhost:8080/teste/pagina.jsp?poduto=23 É um recurso muito trabalhoso, porém consome pouco recurso do servidor 21

input hidden Esta estratégia é muito semelhante a reescrita de URL, contudo pela diferença que todos os formulários deverão possuir <input type= hidden > para os parâmetros que desejamos manter entre as páginas Deve ser tomado o cuidado de atualizar os valores a cada exibição da página Exige muito esforço de programação para manter os campos em todos os formulários 22

input hidden exemplo <html><body> <form method= post action= teste.jsp > <% String codigo = request.getparameter( codigo ); if (codigo == null) codigo = 0 ; int valor = Integer.parseInt( codigo ) +1; %> <h3>formulario de teste</h3> <input type= hidden name= contador value= <%= valor %> > <input type= submit value= Enviar > <h3>contador <%= valor %></h3> </body> </html> Coloca o valor no value do input para que o valor seja propagado 23

Uso da sessão Objeto do tipo HttpSession que permite adicionar e/ou recuperar qualquer objeto através de uma nome identificador Para cada navegador aberto é criada uma sessão no servidor e através deste objeto é possível manter informações entre as páginas Deve ser usado com cuidado para evitar deixar informações na sessão que possam causar confusão em outras páginas 24

session exemplo <html><body> <% Integer numero = (Integer) session.getattribute( contador ); %> <h3>contador <%= numero.intvalue() %></h3> <% numero = new Integer( numero.intvalue() +1 ); session.setattribute( contador, numero ); %> <hr> </body> </html> Observe o molde de tipo pois o método getattribute() retorna Object Atualiza o objeto e coloca de volta na sessão, ficando o objeto disponível para a própria página ou outras durante a navegação 25

Declarações Uma declaração em JSP inicia com <%! e termina com %> Pode ser usada para declarar variáveis Pode ser usada para declarar métodos Segue as mesmas regras de sintaxe do scriplet 26

Exemplos de declarações <%! int n = 0; %> declara variável inteira n <%! int a, b; double c; %> faz diversas declarações ao mesmo tempo <%! Circle a = new Circle(2.0); %> declara e inicializa uma variável da classe Circle 27

Diretivas de páginas As diretivas de página seguem o formato <%@ diretiva atributo1=... atributo2=... atributon=... %> As diretivas permitem configurar diversos comportamentos das páginas JSP Veremos as seguintes diretivas: page include 28

Diretiva page Como o próprio nome já diz permite configurações do comportamento da pagina, tendo os seguintes atributos import contenttype isthreadsafe session buffer language - autoflush - extends - info - errorpage - iserrorpage 29

Atributo import <%@ page import="pacote.classe" %> <%@ page import="pacote.classe1,...,pacote.classn" %> Funciona como o import de uma classe Java permite o uso de uma classe em um trecho de programa sem referenciar o nome completo da mesma, podendo usar Vector ao invés de java.util.vector por exemplo se realizar o <%@ page import="java.util.*" %> 30

Atributo contenttype Indica o MIME-TYPE do conteúdo que a página vai gerar <%@ page contenttype="text/plain" %> indica que o contéudo gerado pela página será texto puro e nao html <%@ page contenttype="application/vnd.ms-excel" %> indica que conteúdo será de uma planilha excel (o conteúdo deverá ser um html com uma tabela que será lida na planilha com cada <td> em uma célula) 31

isthreadsafe, session, buffer <%@ page isthreadsafe="true" %> define que esta página não deve ser acessada simultaneamente <%@ page session="false" %> desabilita a sessão automática,neste caso se o objeto session for usado ocorrerá um erro <%@ page buffer="32kb" %> <%@ page buffer="none" %> define quantos bytes serão armazenados antes de enviar a resposta ao client 32

autoflush, extends <%@ page autoflush="false" %> define que caso o buffer alcance o seu limite não deve ser enviado automaticamente uma resposta ao client, e sim ocorrer um erro de buffer overflows <%@ page extends="pacote.classe" %> define uma classe personalizada para ser a superclasse do JSP compilado 33

info, language <%@ page info="descrição" %> adiciona um texto que pode ser recuperado através do metodo getservletinfo( ) <%@ page language="java" %> define a linguagem usada na página, sendo javaa única opção disponível 34

errorpage, iserrorpage <%@ page errorpage="url relativa" %> define que página deve ser chamada caso algum erro ocorra <%@ page iserrorpage="true" %> define que a pagina atual é uma pagina de erro recebendo o objeto exception contendo a exceção ocorrida em outra página 35

Exemplo de página de erro <%@ page iserrorpage="true" %> <html><body> <h3>ocorreu um erro</h3> <b><%= exception %></b> <pre> <% exception.printstacktrace(new PrintWriter(out)); %> </pre> </body> </html> Usa o objeto de saída padrão do jsp para exibir Exibe a pilha de chamadas do erro 36

Diretiva include <%@ include file="topo.html" %> inclui em tempo de compilação o conteúdo da URL fornecida, caso haja alteração nas páginas incluídas deve ser recompilado o arquivo JSP <jsp:include page="url" flush="true" /> inclui a URL em tempo de execução, não podendo ser um JSP 37

Javabeans São objetos que podem ser usados para facilitar a manipulação de dados nas páginas Para uma classe poder ser usada como JavaBean ela precisa obedecer alguns requisitos: Implementar a interface java.io.serializable Para cada atributo que se deseja oferecer acesso possuir metodos set/get de acesso 38

Exemplo de classe Javabean public class Usuario implements java.io.serializable{ private String nome; private boolean administrador; public String getnome(){ return nome;} public void setnome( String nome ){ this.nome = nome; } } public String isadministrador(){ return administrador;} public void setadministrador( String administrador ){ this.administrador = administrador; } 39

Usando Javabeans sem Javabeans... <% Usuario user = (Usuario) session.getattribute( usuario ); if( user == null ){ user = new Usuario(); user.setnome( request.geetparameter( nome )); session.setattribute( usuario, user ); } %> COM Javabeans! <jsp:usebean class= Usuario id= user scope= session /> <jsp:setproperty name="user" property="nome" /> 40

Entendendo javabeans Indica a classe do objeto a ser criado <jsp:usebean class= Usuario id= user scope= session /> Indica o nome da variável a ser criada Indica o escopo do objeto a ser criado 41

escopos de javabeans O escopo dos javabeans definem a abrangência ou visibilidade dos objetos criados, e são as seguintes: page, o objeto somente é visível na própria página, muito útil para formulários e uso de atribuição automática com muitos atributos session, visivel por toda a navegação das páginas daquela janela aberta application, visível por todas as sessões, permitindo compartilhar informações entre usuários 42

atribuições automáticas <jsp:setproperty name="user" property="nome" /> A tag jsp:setproperty permite a atribuição de valores passados como parâmetro (GET ou POST) diretamente para um JavaBean No atributo name vai o nome do bean, e no property o nome do atributo Desejando atribuir para todos possiveis use property= * 43

fim "Direi do SENHOR: Ele é o meu Deus, o meu refúgio, a minha fortaleza, e nele confiarei." Salmo 91.2 44