JSP – Mais Recursos Jobson Ronan {[email protected]}

of 26 /26
JSP – Mais Recursos Jobson Ronan {[email protected]}

Embed Size (px)

Transcript of JSP – Mais Recursos Jobson Ronan {[email protected]}

  • JSP Mais RecursosJobson Ronan {[email protected]}

  • ObjetivosAprender o que so JavaBeans e como podem ser usados em pginas JSPsAprender a usar a JSTLAprender a usar e EL

  • Usando beansJavaBeans so objetos escritos de acordo com um determinado padro que permite trat-los como componentes de um frameworktimos para separar os detalhes de implementao de uma aplicao de seus serviosPermitem encapsular dados recebidos de outras partes da aplicao e torn-los disponveis para alterao e leitura atravs de uma interface uniforme.Podem ser usados com JSP para remover grande parte do cdigo Java de uma pgina JSPMaior facilidade de manuteno e depuraoSeparao de responsabilidade e reuso de componentes

  • Como incluir um beanPara que um bean possa ser usado por uma aplicao JSP, ele deve estar compilado e localizado dentro do CLASSPATH reconhecido pelo servidorNo subdiretrio WEB-INF/classes do seu contextoPara incluir:

    O atributo de escopo opcional e indica o tempo de vida do Java Bean. Se omitido, ser page, que o limita pginaCom escopo de request, o bean pode ser recuperado com outra instruo que esteja em outra pgina que receber amesma requisio (via dispatcher)Com escopo de session, o bean recupervel em pginas usadas pelo mesmo cliente, desde que no tenha session=false

  • Como incluir um beanO nome do bean (atributo id) comporta-se como uma referncia a um objeto JavaIncluir o tag

    o mesmo que incluir na pgina

    O id pode ser usado em scriptlets para usar membros do bean

  • PropriedadesJavaBeans possuem propriedades que podem ser somenteleitura ou leitura-alterao.O nome da propriedade sempre derivada do nome do mtodo getXXX():public class Bean { private String mensagem; public void setTexto(String x) { mensagem = x; } public String getTexto() { return mensagem; }}O bean acima tem uma propriedade (RW) chamada texto

  • PropriedadesPginas JSP podem ler ou alterar propriedades de um bean usando os tags

    que equivale a e

    que equivale a Observe que o nome do bean passado atravs do atributo name, que corresponde ao atributo id em Valores so convertidos de e para String automaticamenteParmetros HTTP com mesmo nome que as propriedades tm valores passados automaticamente com Se no tiverem, pode-se usar atributo param de l todos os parmetros

  • Inicializao de beansA tag simplesmente cria um bean chamando seu construtor. Para inicializ-lo, preciso chamar seus mtodos setXXX() ou usar aps a definio

    Se um bean j existe, porm, geralmente no se deseja inicializ-lo.Neste caso, a inicializao pode ser feita dentro do marcador e o sistema s a executar se o bean for novo (sej existir, o cdigo ser ignorado)

    ou

  • Condicionais e iteraesNo possvel usar beans para remover de pginas Web o cdigo Java de expresses condicionais e iteraes como for do-while e whilePara isto, no h tags padro. preciso usar Taglibs (JSTL)Beans, porm, podem ser usados dentro de iteraes e condicionais, e ter seus valores alterados a cada repetio ou condio

    = 0; i--) { mBean = messages[i];%>

    (MessageBean tem propriedades: time, host, message)

  • Matando beansBeans so sempre gravados em algum objeto de escopo: page, request, session ou applicationPersistem at que o escopo termine ou expirem devido a um timeout (no caso de sesses)Para se livrar de beans persistentes, use os mtodos removeAttribute(), disponveis para cada objeto de escopo:session.removeAttribute(bean);application.removeAttribute(bean);request.removeAttribute(bean);

  • Composite ViewPginas Web complexas (ex: portais) freqentemente so divididas em partes independentesAlgumas partes so altamente dinmicas, mudando frequentemente at na estrutura internaOutras partes mudam apenas o contedoOutras partes sequer mudam o contedoGerar uma pgina dessas usando apenas um template indesejvel

  • Composite ViewO padro de projeto Composite View sugere que tais pginas sejam separadas em blocos menores, que possam ser alterados individualmente e compostos durante a publicao (deployment) ou exibio

    JSP oferece duas solues para obter esse efeitoUsando incluso esttica (no momento da compilao do servlet)Usando incluso dinmica (no momento da requisio)

  • Incluso estticaMais eficiente: fragmentos so includos em nico servletIndicada quando estrutura no muda com freqncia (contedo pode mudar)Menus, Logotipos e Avisos de copyrightTelas com miniformulrios de buscaImplementada com

    Item 1Item 2Item 3

    Se tela incluida contiver novos fragmentos, eles sero processados recursivamenteFragmento menu.jsp

  • Incluso dinmicaMais lento: fragmentos no so includos no servlet mas carregados no momento da requisioIndicada para blocos cuja estrutura muda com freqnciaBloco central ou notcias de um portalImplementada com Pode-se passar parmetros em tempo de execuo usando no seu interior

  • Repasse de requisiesUma requisio pode ser repassada de uma pgina JSP para outra pgina ou servlet usando RequestDispatcher

    O mesmo efeito possvel sem usar scriptlets com a ao padro Assim como , pode incluir parmetros recuperveis na pgina que receber a requisio usando request.getParameter() ou se houver bean

  • JSP Standard Tag Library (JSTL)Esforo de padronizao do JCP: JSR-152Baseado no Jakarta Taglibs (porm bem menor)Oferece dois recursosConjunto padro de tags bsicos (Core, XML, banco de dados e internacionalizao)Linguagem de expresses do JSP 1.3Oferece mais controle ao autor de pginas sem necessariamente aumentar a complexidadeControle sobre dados sem precisar escrever scriptsEstimula a separao da apresentao e lgicaEstimula o investimento em solues MVC

  • Como usar JSTL1. Fazer o download da ltima verso do site da Sun2. Copiar os JARs das bibliotecas desejadas para o diretrio WEB-INF/lib/ da sua aplicao Web3. Incluir em cada pgina que usa os tags:

    4. Usar os tags da biblioteca com o prefixo definido no passo anterior ...

  • Cinco bibliotecas de tagsCore library: tags para condicionais, iteraes, urls, ... Exemplo: ...XML library: tags para processamento XML Exemplo: ...Internationalization library Exemplo: SQL library Exemplo: ...Function library Exemplo: ${fn:length(...)}

  • Linguagem de expressesPermite embutir em atributos expresses dentro de delimitadores ${...}Em vez de request.getAttribute("nome")${nome}Em vez de bean.getPessoa().getNome()${bean.pessoa.nome}Suporta operadores aritmticos, relacionais e binriosConverte tipos automaticamenteValores default

  • Principais aesSuporte impresso da linguagem expressesExpresses condicionais

    Entrar

    Iterao

    .

  • Tag Files - VantagensReuso os tag files permitem uma melhor customizao de contedo, assim como o uso de nested tags.Compatibilidade com tag handlersPginas JSP sem ScriptletDesenvolvimento rpido Recompilao dinmica dos tag files suportada por alguns containers como tomcat 5.X

  • Tag Files - similar a diretiva page das pginas JSP.

    - descreve um atributo da tag, e se obrigatrio ou no.

    - representa o que definido entre a abertura e fechamento da tag.

  • Exemplo de um Tag File

  • Usando um Tag File

    Usando um Tag File

  • Exerccios1. Use um JavaBean Mensagem, com propriedades email e mensagem para implementar a aplicao de Mensagen da aula anteriorSubstitua todas as chamadas de new Mensagem() por no escopo da sessoUse Expresses para exibir os dados2. Altere gravarMensagens para que use para despachar a requisio para uma pgina erro.jsp, caso o usurio deixe os campos do formulrio em branco, e para listarMensagens.jsp se tudo funcionar corretamente3. Instalar tags do JSTLVeja a documentao e os tags disponveis4. Use os tags de lgica e para remover as expresses condicionais e iteraes das pginas da aplicao de mensagens

  • Exerccios5. Substitua a pgina grava mensagem por um servlet que faa a mesma coisa6. Escreva um custom tag simples que receba um String como parmetro (texto) e imprima o String dentro de uma tabela HTML:O tag deve produzirTexto RecebidoCrie mais dois atributos que definam cor-de-fundo e cor-do-texto para a tabela e o texto.7.Escreva uma segunda verso do tag acima que aceite o texto entre os tags Texto Recebido