JSP (Java Server Pages)



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

Java II. Sérgio Luiz Ruivace Cerqueira

Desenvolvimento Web TCC Turma A-1

Servlets, JSPs e Java Beans

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

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

Tecnologias Web. Java Enterprise Edition

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

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

JSP: JAVA SERVER PAGES

Programação em Rede. Servlets. Manipulação de dados de input em Servlets

UNIDADE III JAVA SERVER PAGES

Desenvolvimento de aplicações Web. Java Server Pages

Aula 03 - Projeto Java Web

Scriptlets e Formulários

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

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

J550 Segurança e Controle de erros

Java na WEB Componentes Bean

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

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

JavaServer Pages (JSP) Leonardo Gresta Paulino Murta

Programação Web Prof. Wladimir

Desenvolvimento Web TCC Turma A-1

ASP Active Server Pages. ASP (Active Server Pages)

JSP: JAVA SERVER PAGES

Java para Desenvolvimento Web

JSP (Java Server Pages)

Programação web Prof. Wladimir

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Programando em PHP. Conceitos Básicos

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

JSP - JavaServer Pages

Java para WEB. Servlets

Java Server Pages JSP

Prof. Roberto Desenvolvimento Web Avançado

Conhecendo um pouco mais o servidor Apache TomCat

Acessando um Banco de Dados

JSP e Servlet Princípio de MVC

Programação para Internet II

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

Programação Web com PHP. Prof. Wylliams Barbosa Santos Optativa IV Projetos de Sistemas Web

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04

Java II. Sérgio Luiz Ruivace Cerqueira

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

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

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Curso De PHP. Aula 4. Formulários. Cookies. Session. Mail

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

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

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

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Sistemas para internet e software livre

Programação Web Aula 12 - Java Web Software

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

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

Estudo Dirigido - Parte 1

Java para Desenvolvimento Web

INTRODUÇÃO AO DESENVOLVIMENTO WEB

Java na WEB Servlet. Sumário

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

18/04/2006 Micropagamento F2b Web Services Web rev 00

Linguagem de. Aula 06. Profa Cristiane Koehler

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

Orientada a serviços: JAX-WS SOAP API

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

Programação para Internet II

JDBC Java Database Connectivity

Os componentes de um formulário são: Form, Input, Select e AreaText

Programação Web Prof. Wladimir

Mais sobre uso de formulários Site sem Ajax

Desenvolvimento Web XHTML Formulários. Prof. Bruno E. G. Gomes

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

Conteúdo Programático de PHP

Desenvolvendo Websites com PHP

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

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

Java. Marcio de Carvalho Victorino

JSF - Controle de Acesso FERNANDO FREITAS COSTA

IFSC-Programação para a WEB - prof. Herval Daminelli

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Servlets & JSP. Prof. Ramon Chiara

ESTUDO SOBRE AS LINGUAGENS DE PROGRAMAÇÃO HOSPEDEIRAS SUPORTADAS PELA FERRAMENTA HTML. Aluno: Rodrigo Ristow Orientador: Wilson Pedro Carli

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web

Java Server Pages. Arquitectura de uma aplicação distribuída em Internet. Figura 1 Modelo 2

Programação II Programação para a Web. Christopher Burrows

JSP trata-se de uma tecnologia que possibilita o desenvolvimento de páginas web dinâmicas utilizando todas as potencialidades do Java como linguagem

FORMULÁRIOS HTML (FORMS) E ENTRADAS DE DADOS (INPUT)

Guia para Iniciantes do WebWork

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

Transcrição:

JSP (Java Server Pages) André Tavares da Silva andre.silva@udesc.br

JSP A linguagem surgiu por volta de 1995. JSP foi inicialmente inventado por Anselm Baird-Smith durante um final de semana e depois Satish Dharmaraj (agora na Zimbra) elaborou uma especificação. O contêiner do lado do servidor Java, concebido pela Netscape, foi feito como um esforço paralelo enquanto outro projeto semelhante estava sendo feito pela Oracle (agora dona do Java). O material Tomcat veio alguns anos mais tarde, quando estava pronta a primeira especificação do servlet, escrita por James Davidson.

JSP JSP é uma tecnologia utilizada no desenvolvimento de aplicações para Web, similar às tecnologias Active Server Pages (ASP) da Microsoft ou PHP. Por ser baseada na linguagem de programação Java, tem a vantagem da portabilidade. Esta tecnologia permite ao desenvolvedor de páginas produzir aplicações que acessem o banco de dados, manipulem arquivos, capturem informações a partir de formulários, entre outras.

JSP Em relação a arquitetura, JSP pode ser visto como uma abstração de alto nível dos Java servlets. Páginas JSP são carregadas dentro do servidor e processado a partir de uma estrutura especial do servidor Java, chamada Java EE Web Application, muitas vezes como um arquivo.war ou.ear.

Delimitando o código JSP Declaração de expressão (Expression tag) <%= %> - o resultado é retornado como String Exemplos: O seu endereço IP é: <%= request.getremoteaddr() %> <%= 2+2%> Declaração de sintaxe (Scriplet tag) <% %> - declaração livre. Exemplo: <% for( int i= 0; i< 10; i++) { }%> out.println( numero: + i);

Exemplo <TABLE BORDER=2> <TR> <TD>Numero</TD> <TD>Dobro</TD> </TR> <% for ( int i = 1; i <= 10; i++ ) { %> <TR> <TD><%= i %></TD> <TD><%= i*2 %></TD> </TR> <% } %> </TABLE>

Delimitando o código JSP Declarações (Declaration tag) <%! %> Permite declarar variáveis e métodos. Exemplo: <%! private int contador=0; %> Diretivas (Directive tag) <%@ %> Permite dar informação sobre a página ao motor JSP.

Tipos de diretivas page - processa informação para esta página (existem 11 atributos opcionais). Sintaxe: <%@ page atributo= valor %> include - arquivos a serem incluídos. Sintaxe: <%@ include file= pagina.jsp %> taglib - Define uma biblioteca a ser usada. Precisa de um prefixo e de um url: Sintaxe: <%@ taglib prefix = "prefixo" uri = "mytl.tld" %>

Exemplo <%@ page import="java.util.*" %> <HTML> <BODY> <% System.out.println("Verificando a hora do sistema..."); Date date = new Date(); %> Oi! A hora atual é <%= date %>. </BODY> </HTML>

Cuidado! <%@ page import="java.util.*" %> <HTML> <BODY> <%! Date thedate = new Date(); Date getdate() { System.out.println("Em getdate()..."); return thedate; } %> Oi! A hora atual é <%= getdate() %> </BODY> </HTML>

Tags JSP (Action tags) Elas não usam <% e %>, apenas os caracteres < e > como as tags HTML. Existem dois tipos: de uma biblioteca externa e predefinidas. As tags predefinidas começam com as letras "jsp:", por exemplo, <jsp:include... /> é uma tag predefinida usada para incluir outras páginas.

jsp:include jsp:include é similar à diretiva include vista anteriormente. Mas ao invés de inserir o texto no arquivo original, ela realmente chama o arquivo em tempo de execução. Na prática, muda a forma com que a página é lida pelo browser. A diretiva include é realizada pelo browser e a interpretação da tag jsp:include é feita pelo servidor JSP.

Exemplo <HTML> <BODY> Incluindo hello.jsp...<br> <jsp:include page="hello.jsp"/> </BODY> </HTML>

Exemplos de tags JSP predefinidas Acessar e alterar propriedades de JavaBeans: jsp:usebean, jsp:getproperty e jsp:setproperty; Redirecionar a requisição para outra página JSP: jsp:forward; Uma única tag para a inclusão de applets Java em páginas, independentemente do navegador cliente: jsp:plugin e jsp:fallback.

Tags customizadas Tags customizadas definem elementos JSP. Quando uma página JSP contém uma tag customizada (geralmente externa), ela é traduzida para um servlet e convertida para operações em um objeto (tag handler). O contêiner Web invoca então a operação toda vez que a página JSP é executada.

Bibliotecas de tags (tag-libraries) Cada tag-library tem sua própria documentação específica. A diretiva "taglib" é usada para definir uma biblioteca de tags a ser utilizada na página: <%@ taglib uri="/struts-html" prefix="html" %> O parâmetro "uri" define onde procurar a biblioteca e "prefix" é único e indica qual o prefixo é utilizado pela biblioteca.

Frameworks / Bibliotecas de tags JSF (JavaServer Faces): framework MVC de aplicações Web baseado em Java que se destina a simplificar o desenvolvimento de interfaces de usuário baseadas em web. Struts: framework de desenvolvimento da camada controladora, numa estrutura seguindo o padrão Model 2 (uma variante do MVC oficializada pela Sun). Apache Tapestry: framework open-source para implementar aplicações de acordo com o padrão MVC.

Voltando ao exemplo... <%@ page import="java.util.*" %> <HTML> <BODY> <% System.out.println("Verificando a hora do sistema..."); Date date = new Date(); %> Oi! A hora atual é <%= date %>. </BODY> </HTML>

Objetos Instanciados Uma página JSP possui 9 objetos previamente instanciados: request javax. servlet. ServletRequest response javax. servlet. ServletResponse pagecontext javax. servlet. jsp. PageContext session javax. servlet. http. HttpSession application javax. servlet. servletcontext out javax. servlet. jsp. JspWriter config javax. servlet. ServletConfig page java. lang. Object exception java. lang. Throwable

Exemplo <%@ page import="java.util.*" %> <HTML> <BODY> <% System.out.println("Verificando a hora do sistema..."); Date date = new Date(); out.println("oi! A hora atual é + date ); %> </BODY> </HTML>

Processando dados de formulário O objeto request busca por valores de parâmetros ou cookies. O método getparameter recebe como parâmetro o nome do campo de formulário e retorna o valor recebido de um formulário.

Formulário de exemplo <HTML> <BODY> <FORM METHOD=POST ACTION="CadPessoa.jsp"> Nome: <INPUT TYPE=TEXT NAME=username><BR> E-Mail: <INPUT TYPE=TEXT NAME=email><BR> Telefone: <INPUT TYPE=TEXT NAME=phone> <INPUT TYPE=SUBMIT VALUE=Enviar> </FORM> </BODY> </HTML>

Processando o formulário <HTML> <BODY> Você digitou:<br> Nome: <%= request.getparameter("username") %><BR> E-mail: <%= request.getparameter("email") %><BR> Telefone: <%= request.getparameter("phone") %><BR> </BODY> </HTML>

Lendo todos os parâmetros Enumeration paramnames = request.getparameternames(); while(paramnames.hasmoreelements()) { String paramname = (String)paramNames.nextElement(); out.println("<tr><td>" + paramname + "<TD>"); String[] paramvalues = request.getparametervalues(paramname); if (paramvalues.length == 1) { String paramvalue = paramvalues[0]; if (paramvalue.length() == 0) out.print("<i>vazio</i>"); else out.print(paramvalue); } else { out.println("<ul>"); for(int i=0; i<paramvalues.length; i++) { out.println("<li>" + paramvalues[i]); } out.println("</ul>"); } }

Definindo uma classe package user; public class UserData { String username; String email; int phone;... public void setusername( String value ) { username = value; } } public String getusername() { return username; } public String getemail() { return email; } public int getphone() { return phone; }

Salvando formulário na classe <jsp:usebean id="user" class="user.userdata" scope="session"/> <jsp:setproperty name="user" property="*"/> <HTML> <BODY> <A HREF="NextPage.jsp">Clique para continuar</a> </BODY> </HTML>

Recuperando dados do bean <jsp:usebean id="user" class="user.userdata" scope="session"/> <HTML> <BODY> Você digitou:<br> Nome: <%= user.getusername() %><BR> E-mail: <%= user.getemail() %><BR> Telefone: <%= user.getphone() %><BR> </BODY> </HTML>

Seções Em um mesmo site, normalmente muitos usuário de Internet realizam diversas interações simultaneamente. Ao programar um site, é extremamente útil associar informações a cada um dos usuários. As seções são utilizadas para isto em JSP. Os dados são colocados na seção e recuperados dele como em um objeto Hashtable.

Formulário <HTML> <BODY> <FORM METHOD=POST ACTION="CadPessoa.jsp"> Nome: <INPUT TYPE=TEXT NAME=username><BR> E-Mail: <INPUT TYPE=TEXT NAME=email><BR> Telefone: <INPUT TYPE=TEXT NAME=phone> <INPUT TYPE=SUBMIT VALUE=Enviar> </FORM> </BODY> </HTML>

Salvando na seção <% String name = request.getparameter("username"); session.setattribute("thename", name); %> <HTML> <BODY> <A HREF="NextPage.jsp">Clique para continuar</a> </BODY> </HTML>

Lendo da seção <HTML> <BODY> Oi, <%= session.getattribute("thename") %> </BODY> </HTML>

Seções de aplicação O uso mais comum de seções é utilizar seções de usuário através dos métodos getattribute e setattribute do objeto session mas também é possível utilizar seções de aplicação através do objeto pagecontext. Exemplo: <%= pagecontext.getattribute( glogin, PageContext.APPLICATION_SCOPE) %>

Página de login Alguns tipos de sites necessitam de login usando um usuário e senha. A partir da especificação 2.2 de Servlet da Sun, isto ficou mais fácil de implementar. Para isto, a página de login deve possuir (na tag FORM) o método ACTION setado para "j_security_check": <FORM METHOD=POST ACTION=j_security_check>

Página de login O destino j_security_check é feito pela aplicação e não necessita ser codificado. O formulário deve conter dois campos <INPUT> nomeados como j_username e j_password, para usuário e senha respectivamente.

Página de login <form method="post" action="j_security_check"> <input type="text" name="j_username"> <input type="password" name="j_password"> <\form>

Página de login Após isso, você deve instruir o servidor de aplicativos a proteger suas páginas usando a página de login que você forneceu. Os detalhes de implementação variam de servidor para servidor, mas uma boa implementação fornece várias facilidades pra, por exemplo, combinar login e senha com uma tabela da base de dados.

O que mais aprender? Java Especificações de JSP e Servlets Definição de interfaces javax.servlet.http.httpservletrequest javax.servlet.http.httpservletresponse javax.servlet.jsp.jspwriter javax.servlet.jsp.pagecontext SQL Frameworks (Struts, JSF, Spring MVC,...)

1. Faça uma página HTML que contenha um formulário com os campos nome, endereço, e-mail, senha e confirmação de senha. Esse formulário deverá ser enviado para um script JSP que irá verificar a existência e a integridade dos dados, mostrá-los e possibilitar ao usuário voltar à página anterior (HTML) caso haja algum erro. 2. Faça uma página em JSP semelhante às páginas anteriores para verificar a integridade dos dados, informe os erros (caso houver) e preencha um formulário com os dados enviados (exceto senha). Insira um contador para exibir o número de tentativas realizadas pelo usuário.