·

Ciência da Computação ·

Linguagens de Programação

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta

Texto de pré-visualização

JSP JavaServer Pages DESENVOLVIMENTO WEB Professor Daniel dos Anjos Costa Email danielanjosifbaedubr ROTEIRO Introdução JSP Primeiro Exemplo Tags Especiais Taglibs JSTL Introdução Até agora vimos que podemos escrever conteúdo dinâmico através de Servlets A tecnologia dos Servlets permite criar página dinâmicas dentro do servidor e enviar como resposta para o cliente Entretanto criar HTML com Código JAVA é um pouco massante e trabalhoso A legibilidade do nosso código seria um problema pois sempre aparece código Java misturado com código HTML Introdução Para não termos que criar todos os nossos conteúdos dinâmicos dentro de classes precisamos usar uma tecnologia que envolva o HTML de forma direta e que também vá possibilitar a utilização do Java É uma abordagem que separa a lógica de apresentação da lógica de negócios Se Servlet é muito Java com pouco HTML JSP é muito HTML com pouco Java JSP Uma página JSP nada mais é que um arquivo baseado em HTML com a extensão jsp Nele é possível incorporar trechos de código Java dentro de tags especiais onde o código Java é executado no servidor antes do conteúdo ser enviado ao navegador do cliente Scriptlet é o código escrito entre e Primeiro Exemplo pagina01jsp Código Java dentro do HTML Primeiro Exemplo Primeiro Exemplo Importando objetos Observe que temos de indicar os caminhos completos das classes como Date precisou ser precedida por javautil pagina01jsp Primeiro Exemplo Importando objetos BEMVINDO A PRIMEIRA APLICAÇÃO WEB COM JSP Tags Especiais PARTE 01 Existem várias tags especiais no JSP que servem para diferentes propósitos Tag de scriptlet Permite a inserção de código Java no corpo da tag Usada para realizar cálculos ou execução de lógica de negócios Tag de expressão Avalia uma expressão Java e insere seu valor diretamente no HTML Geralmente usada para exibir valores de variáveis ou resultados de cálculos Tag de declaração Permite a definição de métodos ou variáveis que podem ser usados em outras partes do JSP Geralmente usada para definir métodos de utilidade ou variáveis globais Resultado 5 DOCTYPE html EXEMPLO Tags Especiais PARTE 02 Comentário em JSP Tag de diretiva Define informações de configuração para a página JSP Pode ser usada para importar classes especificar a codificação definir bibliotecas de tags personalizadas etc pagina02jsp EXEMPLO Nesse exemplo vamos criar um objeto com um ArrayList de contatos simulando que os contatos vem de um banco de dados Vamos usar dentro do JSP uma estrutura de repetição for para listar todos os contatos BEMVINDO A SEGUNDA APLICAÇÃO WEB COM JSP EXEMPLO Class ListaContatosjava 5 titleHTML Pagetitle page importjavautil objetos ListaContatos lista new ListaContatos ArrayListContato contatos listacontatos for Contato contato contatos head LISTA DE CONTATOS USANDO JSP NOME EMAIL ENDEREÇO DATA DE NASCIMENTO TELEFONE Daniel danielgmailcom 22041986 75 999999999 João joaogmailcom 01011981 75 111111111 Maria mariagmailcom 02021982 75 222222222 José josegmailcom 03031983 75 333333333 EXEMPLO pagina04jsp Vamos usar uma estrutura de condicional para excluir uma das linhas da nossa tabela A linha escolhida é a que tem a variável nome com valor Daniel body div classw3container page importjavautil objetos ListaContatos lista new ListaContatos ArrayListContato contatos listacontatos for Contato contato contatos ifcontatogetNomeequalsDaniel h1BMVINDO A SEGUNDA APLICAÇÃO WEB COM JSPh1brbr EXEMPLO Taglibs O código JAVA dentro do HTML tira um pouco a característica de linguagem de Tags Para melhorar a legibilidade do código a Sun criou mais tags que permitem fazer o que se faz com código JAVA Ou seja tags que fazem loops condicionais instanciação de objetos etc A Sun criou a biblioteca JSTL JavaServer Pages Standard Tag Library taglib urihttpjavasuncomjspjstlcore prefixc div Tags Especiais cforEach Looping Permite a execução de loops em coleções como Listas e outros tipos de dados cif Estrutura condicional Permite a execução de instruções condicionais cchoose cwhen cotherwise Estruturas de escolha Tags da biblioteca JSTL para implementar lógica condicional complexa div classw3container Tags Especiais jspuseBean Possibilita instanciar objetos jspuseBean idcontato classobjetosContato Podemos imprimir o nome do contato com contatonome h1 div classw3container int a 2 int b 3 int c ab div classw3container int soma h1LISTA DE CONTATOS USANDO JSPh1 LISTA DE CONTATOS USANDO JSP Uso da biblioteca JSTL para excluir o nome Daniel NOME EMAIL ENDEREÇO DATA DE NASCIMENTO TELEFONE João joaogmailcom rua 01 01011981 75 111111111 Maria mariagmailcom rua 02 02021982 75 222222222 José josegmailcom rua 03 03031983 75 333333333 cforEach Iterar sobre uma coleção ArrayList List etc Nesse caso a tag cforEach itera sobre cada elemento da coleção collection e atribui cada elemento à variável item O conteúdo dentro da tag será executado para cada item h2Uso da biblioteca JSTL para excluir o nome Danielh2 cforEach Iterar sobre um Map Aqui a tag cforEach itera sobre cada entrada no Map map e atribui cada entrada ao objeto entry Você pode acessar a chave e o valor dentro do loop return a b br cforEach Iterar com índice Usando o atributo varStatus você pode acessar informações sobre o loop como o índice atual loopindex contagem total de iterações loopcount se é o primeiro ou último item loopfirst e looplast entre outros br cforEach Loop por um número específico de vezes Neste caso a tag cforEach criará um loop que itera cinco vezes 0 a 4 table classw3table w3striped w3bordered cif Condição simples Substitua condicao por uma expressão booleana que você deseja avaliar O conteúdo dentro da tag será executado somente se a condição for verdadeira soma tr cchoose Estrutura de condicional com else Use cchoose cwhen e cotherwise para criar uma estrutura condicional mais complexa com alternativas O cwhen é usado para testar uma condição adicional enquanto o cotherwise é executado se nenhuma das condições anteriores for verdadeira h1 thNOMEth cset Você pode usar cset para definir variáveis com valores específicos Isso é útil quando você deseja armazenar um valor que será usado várias vezes no mesmo JSP div thEMAILth Outras Tags do JSTL Formatting Tags fmt taglib urihttpjavasuncomjspjstlfmt prefixfmt fmtformatDate Formata datas fmtformatNumber Formata números fmtmessage Exibe mensagens internacionalizadas Functions fn fnlength Retorna o comprimento de uma string ou tamanho de uma coleção fnstartsWith fnendsWith Verifica se uma string começa ou termina com um valor específico URL Tags curl e cparam curl Constrói URLs cparam Define parâmetros em URLs body thENDEREÇOth Sessão Uma sessão referese a um mecanismo que permite manter o estado do usuário entre várias solicitações HTTP A sessão geralmente é identificada por um identificador exclusivo que permite associar dados específicos O tempo de vida de uma sessão pode ser configurado e varia de acordo com a implementação específica Pode ser mantida até que o navegador seja fechado sessão de sessão única expirar após um período inativo ou seguir outras políticas definidas pelo desenvolvedor html thDATA DE NASCIMENTOth Como implementar uma sessão Importar a biblioteca de sessão no servlet import jakartaservlethttpHttpSession Na função onde a sessão vai guardar dados deve HttpSession session requestgetSession sessionsetAttributeID objeto thTELEFONEth Como implementar uma sessão Importar a biblioteca de sessão no servlet import jakartaservlethttpHttpSession Na função onde a sessão vai devolver os dados deve HttpSession session requestgetSession Objeto obj Objeto sessiongetAttributeID tr Como implementar uma sessão Para armazenar uma lista de um objeto deve fazer os seguintes passo Buscar na sessão a lista Verificar se o que chegou é nulo Se for nulo deve criar uma lista nova Adicionar na lista o objeto table div Para atualizar uma lista de contatos devemos antes resgatar a lista ArrayListContato lista ArrayListContato sessiongetAttributenamelistaContatos if lista null verifica se a lista é nula lista new ArrayListContato se tiver nula cria uma nova lista listaadde contato adiciona o contato a lista sessionsetAttributenameListaContatos valuelista atualiza o objeto lista na sessão Códigos de Exemplo AULA06 JSPzip DÚVIDAS REFERÊNCIAS BIBLIOGRÁFICAS KFIELDS Duane Desenvolvendo na Web com Java Server Pages São Paulo Ciência Moderna 2000 LUCKOW D H e MELO A Programação Java Para a Web São Paulo Editora Novatec 2010 REFERÊNCIAS BIBLIOGRÁFICAS EVANDS Tim Minute Guideto HTML 32 Second Edition Prentice Hall E Rocha A ZORZO D SOUZA R e ROCHA A Desenvolvimento de Aplicações Web em Java UABUFSCar São Carlos 2016 Disponível em httplivresaberseadufscarbr8080jspuibit stream12345678926671SIZorzoAplicac oesWebJavapdf REFERÊNCIAS BIBLIOGRÁFICAS Tutoriais do W3schools Disponível em httpswwww3schoolscom Último Acesso 02092023