



























































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Documento html que descrive o formulário para cadastro de mídia, contendo informações sobre a estrutura do formulário, atributos e validações.
Tipologia: Notas de estudo
1 / 67
Esta página não é visível na pré-visualização
Não perca as partes importantes!




























































JSP significa “Java Server Pages”. Esta tecnologia ´e usada para servir conte´udo dinˆamico para o usu´ario, usando l´ogica e dados no lado do servidor. JSP faz parte da plataforma J2EE (Java 2 Enterprise Edition) e juntamente com os Java Servlets e Java Beans pode ser usada para desenvolver aplica¸c˜oes web eficientes, escal´aveis e seguras rapidamente.
Existem v´arias linguagens usadas para criar aplica¸c˜oes web. Entre elas ASP, PHP, ColdFusion e Perl. Por que usar JSP ent˜ao?
1.2 Como JSPs funcionam
A finalidade de JSP ´e fornecer um m´etodo de desenvolvimento de servlets declarativo e centrado na apresenta¸c˜ao. A especifica¸c˜ao de JSP ´e definida como uma extens˜ao da API de Servlets. Conseq¨uentemente, n˜ao ´e de se admirar que por tr´as dos panos, servlets e p´aginas JSP tem muito em comum. Tipicamente, p´aginas JSP est˜ao sujeitas a uma fase de tradu¸c˜ao e outra de processamento da requisi¸c˜ao. A fase de tradu¸c˜ao ´e feita apenas uma vez, a menos que a p´agina JSP mude, e no caso ´e traduzida novamente. Supondo que n˜ao houve nenhum erro de sintaxe na p´agina, o resultado ´e uma p´agina JSP que implementa a interface Servlet. A fase de tradu¸c˜ao ´e tipicamente realizada pela engine JSP, quando ela recebe uma requisi¸c˜ao para a p´agina JSP pela primeira vez. A especifica¸c˜ao JSP 1.1 tamb´em permite que p´aginas JSP sejam pr´e-compiladas em arquivos class. Isto pode ser ´util para evitar a demora para carregar a p´agina JSP na primeira vez que ela ´e acessada. V´arias informa¸c˜oes da fase de tradu¸c˜ao, como a localiza¸c˜ao de onde ´e armazenado o p´agina JSP j´a compilada (portanto o servlet correspondente a esta p´agina) s˜ao dependentes da implementa¸c˜ao da engine JSP. A classe que implementa uma p´agina JSP estende a classe HttpJspBase, que implementa a interface Servlet. O m´etodo de servi¸co desta classe, jspService(), essencialmente encapsula o conte´udo da p´agina JSP. Ainda que o m´etodo jspService() n˜ao pode ser sobrescrito, o desenvolvedor pode descrever even- tos de inicializa¸c˜ao e destrui¸c˜ao fornecendo implementa¸c˜oes dos m´etodos js- pInit() e jspDestroy dentro da p´agina JSP. Uma vez que a classe ´e carregada no recipiente, o m´etodo jspService() ´e respons´avel por responder `as requisi¸c˜oes do cliente.
1.3 Instalando e configurando o Tomcat
Primeiro vocˆe precisa ter a m´aquina virtual java (JDK 1.3 ou mais atual) instalada na sua m´aquina. Esta pode ser obtida gratuitamente no endere¸co http://java.sun.com.
Tomcat ´e um servidor de p´aginas JSP e Servlets. Desenvolvido pela funda¸c˜ao Apache, no projeto Jakarta, seu c´odigo ´e aberto e o programa ´e gratuito. Pode ser obtido em http://jakarta.apache.org.
Instale ou descompacte o arquivo que vocˆe baixou em algum diret´orio. Depois vocˆe ter´a que criar duas vari´aveis de ambiente, CATALINA HOME e JAVA HOME, onde CATALINA HOME ´e o diret´orio base do Tomcat e JAVA HOME ´e o diret´orio base da plataforma Java. Por exemplo, se o Tomcat foi instalado em c:\tomcat e a JVM (Java Virtual Machine) est´a em c:\java, estas vari´aveis devem ser:
Um Bean ´e simplesmente uma classe de Java que segue um conjunto de conven¸c˜oes simples de design e nomea¸c˜ao delineado pela especifica¸c˜ao de JavaBeans. Os Beans n˜ao precisam estender uma determinada classe ou implementar uma determinada interface.
As conven¸c˜oes de JavaBean s˜ao o que nos permitem desenvolver Beans, porque elas permitem que o container Bean analise um arquivo de classe Java e interprete seus m´etodos como propriedades, designando a classe como um Bean de Java.
O construtor Bean
A primeira regra da cria¸c˜ao do Bean JSP ´e que vocˆe tem que implemen- tar um construtor que n˜ao tenha argumentos. Este construtor ´e usado por exemplo para instanciar um Bean atrav´es da tag visto mais adiante. Se a classe n˜ao especificar um construtor sem argumentos, ent˜ao um construtor sem argumentos e sem c´odigo ser´a assumido. public Bean() { }
Propriedades de um Bean
Coloque os atributos como privados, e fa¸ca m´etodos get e set para acess´a- los, e este m´etodos ent˜ao ser˜ao p´ublicos.
private String nome; public String getNome() { return nome;} public void setNome(String novo) { nome = novo; }
Uma boa conven¸c˜ao de nome de propriedades, ´e come¸car com letra min´uscula e colocar em mai´uscula a primeira letra de cada palavra subseq¨uente. Assim como nos m´etodos de ajuste, a palavra set ou get come¸ca em min´uscula e a primeira letra da propriedade ser´a mai´uscula.
private String corCarro; public String getCorCarro();"
Propriedades indexadas
Caso a propriedade seja um conjunto de valores (array), ´e uma boa pr´atica criar m´etodos para acessar o conjunto inteiro de valores e para acessar uma posi¸c˜ao espec´ıfica.
private String[] telefone;
public String[] getTelefone() { return telefone; }
public String getTelefone(int index) { return telefone[index]; }
Propriedades booleanas
Para propriedades booleanas, vocˆe pode substituir a palavra get por is.
private boolean enabled;
public boolean isEnabled() { return enabled; }
2.2 JSP Tags
Numa olhada r´apida, JSP parece com HTML (ou XML), ambos cont´em texto encapsulado entre tags, que s˜ao definidas entre os s´ımbolos < e >. Mas enquanto as tags HTML s˜ao processadas pelo navegador do cliente para mostrar a p´agina, as tags de JSP s˜ao usadas pelo servidor web para gerar conte´udo dinˆamico. A seguir est˜ao os tipos de tags v´alidos em JSP:
Executam diversas fun¸c˜oes e estendem a capacidade de JSP. Usam sintaxe parecida com XML, e s˜ao usadas (entre outras coisas) para manipular Java Beans. Existem seis tipos de a¸c˜oes:
Executa ou mostra um objeto (tipicamente um applet ou um bean) no navegador do cliente, usando o plug-in Java que est´a embutido no navegador ou instalado na m´aquina. N˜ao ser´a explicado o funcionamento deste elemento no curso.
Localiza ou instancia um componente. Primeiro tenta localizar uma instˆancia do bean. Se n˜ao existe, instancia ele a partir da classe especifi- cada. Para localizar ou instanciar o bean, s˜ao seguidos os seguintes passos, nesta ordem:
Sintaxe:
| > outros elementos (tags de corpo)
}
O elemento ajusta o valor de uma ou mais proprie- dades em um bean, usando os m´etodos de ajuste (set) dele. E necess´´ ario declarar o bean com antes de ajustar uma propriedade. Es- tas duas a¸c˜oes trabalham juntas, portanto o nome de instˆancia usada nas duas deve ser igual. Sintaxe:
S˜ao instru¸c˜oes processadas quando a p´agina JSP ´e compilada em um servlet. Diretivas s˜ao usadas para ajustar instru¸c˜oes no n´ıvel da p´agina, inserir dados de arquivos externos, e especificar tag libraries. Diretivas s˜ao definidas entre <%@ e %>. Existem trˆes tipos de diretivas:
Include
Inclui um arquivo est´atico em uma p´agina JSP. Sintaxe:
<%@ include file="relativeURL" %>
Page
Define atributos que s˜ao aplicados a todo o arquivo JSP, e a todos os seus arquivos inclu´ıdos estaticamente. Sintaxe:
<%@ page [ language="java" ] [ extends="package.class" ] [ import="{package.class | package.*}, ..." ] [ session="true|false" ] [ buffer="none|8kb|sizekb" ] [ autoFlush="true|false" ] [ isThreadSafe="true|false" ] [ info="text" ] [ errorPage="URL relativa" ] [ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ] [ isErrorPage="true|false" ] %>
Taglib
Define uma tag library e seu prefixo a ser usado na p´agina JSP. Sintaxe:
2.3 Objetos impl´ıcitos
Como uma caracter´ıstica conveniente, o container JSP deixa dispon´ıvel objetos impl´ıcitos que podem ser usados nos scriptlets e express˜oes, sem que o autor tenha que cri´a-los. Estes objetos instanciam classes definidas na API (application program interface) de Servlets. S˜ao nove objetos:
Tabela 2.1: Objetos Impl´ıcitos
Objeto Classe ou Interface Descri¸c˜ao page javax.servlet.jsp.HttpJspPage Instˆancia de servlet da p´agina
config javax.servlet.ServletConfig Dados de configura¸c˜ao do Servlet
request javax.servlet.http.HttpServletRequest Dados de solicita¸c˜ao incluindo parˆametros
response javax.servlet.http.HttpServletResponse Dados da resposta
out javax.servlet.jsp.JspWriter Fluxo de sa´ıda para o conte´udo da p´agina
session javax.servlet.http.HttpSession Dados de sess˜ao es- pec´ıficos de usu´ario
application javax.servlet.ServletContext Dados compartilhados por todas as p´aginas da aplica¸c˜ao
pageContext javax.servlet.jsp.PageContext Dados de contexto para execu¸c˜ao da p´agina
exception javax.lang.Throwable Erros n˜ao pegos ou exce¸c˜ao
Objeto page
O objeto page representa a pr´opria p´agina JSP ou, mais especificamente, uma instˆancia da classe de servlet na qual a p´agina foi traduzida.
Objeto config
O objeto config armazena dados de configura¸c˜ao de servlet — na forma de parˆametros de inicializa¸c˜ao — para o servlet no qual uma p´agina JSP ´e
compilada. Pelo fato das p´aginas JSP raramente serem escritas para interagir com parˆametros de inicializa¸c˜ao, este objeto impl´ıcito raramente ´e usado na pr´atica.
Objeto request
O objeto request representa a solicita¸c˜ao que acionou o processamento da p´agina atual. Para solicita¸c˜oes de HTTP, este objeto fornece acesso a todas as informa¸c˜oes associadas com uma solicita¸c˜ao, incluindo sua fonte, a URL solicitada e quaisquer cabe¸calhos, cookies ou parˆametros associados com a solicita¸c˜ao. Dentre os usos mais comuns para o objeto request, encontra-se a procura por valores de parˆametros e cookies.
Objeto response
O objeto response representa a resposta que ser´a enviada de volta para o usu´ario como resultado do processamento da p´agina JSP.
Objeto out
Este objeto impl´ıcito representa o fluxo de sa´ıda para a p´agina, cujo conte´udo ser´a enviado para o navegador como o corpo de sua resposta.
Objeto session
Este objeto impl´ıcito de JSP representa a sess˜ao atual de um usu´ario individual. Todas as solicita¸c˜oes feitas por um usu´ario, que s˜ao parte de uma ´unica s´erie de intera¸c˜oes com o servidor da web, s˜ao consideradas parte de uma sess˜ao. Desde que novas solicita¸c˜oes por aqueles usu´arios continuem a ser recebidas pelo servidor, a sess˜ao persiste. Se, no entanto, um certo per´ıodo de tempo passar sem que qualquer nova solicita¸c˜ao do usu´ario seja recebida, a sess˜ao expira. O objeto session, ent˜ao armazena informa¸c˜oes a respeito da sess˜ao. Os dados espec´ıficos de aplica¸c˜ao s˜ao tipicamente adicionados a sess˜ao atrav´es de atributos, usando os m´etodos da interface javax.servlet.http.HttpSession. O objeto session n˜ao est´a dispon´ıvel para todas as p´aginas JSP, seu uso ´e restritoas p´aginas que participam do gerenciamento da sess˜ao. Isto ´e indicado atrav´es do atributo session da diretiva page. O padr˜ao ´e que todas as p´aginas participem do gerenciamento de sess˜ao. Se o atributo estiver definido para false, o objeto n˜ao estar´a dispon´ıvel e seu uso resultar´a em um erro de compila¸c˜ao quando o recipiente JSP tentar traduzir a p´agina para um servlet.
Objeto application
Este objeto impl´ıcito representa a aplica¸c˜ao `a qual a p´agina JSP pertence. Ela ´e uma instˆancia da interface javax.servlet.ServletContext. As p´aginas JSP est˜ao agrupadas em aplica¸c˜oes de acordo com suas URLs. Este objeto permite acessar informa¸c˜oes do container, interagir com o servidor e fornece suporte para logs.
Título*
O atributo name dos campos do formul´ario devem preferencialmente ter o mesmo nome que seu atributo correspondente no bean usado para armazenar as informa¸c˜oes do formul´ario.
Ano*
Descri¸c~ao
Tipo*
VHS
DVD
Vamos criar nosso bean que ter´a as informa¸c˜oes da M´ıdia. Ele deve ter todos os atributos do formul´ario que constru´ımos, e todos os m´etodos set e get para acess´a-los. Al´em disso, teremos outro atributo, para controle
de eventuais erros no processamento do formul´ario (dados necess´arios n˜ao digitados por exemplo). Usaremos uma tabela de hash (java.util.Hashtable) que ter´a como chave o nome do atributo e como valor a mensagem de erro que desejarmos. Chamaremos a Hashtable de erros, e ela tamb´em ter´a seus m´etodos set e get. Por fim, criaremos um m´etodo para verificar se todos os dados necess´arios foram digitados, validando ou n˜ao o formul´ario. Abaixo est´a o c´odigo fonte do BeanMidia, veja os coment´arios para mai- ores detalhes.
package beans;
import java.util.Hashtable; /**
/**
public BeanMidia() { /* Iniciamos os atributos com o String nulo */ titulo = ""; ano = ""; descricao = ""; tipo = ""; erros = new Hashtable(); }
/**
public String getTitulo() { return titulo; }
public String getAno() { return ano; }
public String getTipo() { return tipo;
/**
}
Agora vamos construir o arquivo que processa o formul´ario, este, at´e que enfim, feito em JSP. O atributo import da diretiva page estende o conjunto de classes Java que podem ser referenciadas um uma p´agina JSP sem ter que explicitamente especificar os nomes de pacote de classes.
<%@ page import="beans.BeanMidia" %>
A tag diz `a p´agina que vocˆe quer disponibilizar um Bean para a p´agina.
Mostramos abaixo trˆes maneiras de ajustar os atributos de um bean. A primeira diz-se o nome do atributo do bean no parˆametro property e ent˜ao especifica-se o valor no parˆametro value. Nas outras duas o atributo do bean tem o mesmo nome do valor colocado em property. Pode-se tamb´em ajustar os valores dos atributos usando os m´etodos set do bean, usando o ambiente dos scriptlets.
’ />
<% midia.setTipo(request.getParameter("tipo")); %>
Verifica-se se todos os atributos necess´arios foram digitados e ent˜ao redireciona- se para a p´agina de sucesso ou para o formul´ario que trata erros.
<% if (midia.ehValido()) { %>
<% } else { %>
<% } %>
Este arquivo ´e visualmente idˆentico ao formul´ario anterior, mas ele ´e um arquivo JSP que mostra poss´ıveis erros ocorridos durante o cadastro. Declaramos o bean usado no arquivo nas primeiras linhas. E necess´´ ario que ele tenha o mesmo nome dos arquivos antecessores (no caso, Processar- Midia.jsp).
<%@ page import="beans.BeanMidia" %>
Cadastro de Mídia
Cadastro de Mídias
Título*
Colocamos em value o que tem no atributo titulo do BeanMidia, para que o formul´ario fique igual ao que foi digitado anteriormente. Isto poupa trabalho ao usu´ario que n˜ao precisa digitar tudo novamente.