[MÚSICA] [MÚSICA] Olá a todos! Esse é o Curso de Desenvolvimento Ágil com Java Avançado, meu nome é Eduardo Guerra e hoje vamos falar sobre páginas JSP. A gente vai aprender aí como que funcionam as páginas JSP, aprendendo aí os seus principais elementos. Certo? Então, vamos lá. A gente viu aí que é complicado a gente misturar, por exemplo ali no servlet colocar... [TOSSE] O código está muito poluído com isso. [TOSSE] Realmente não dá, você misturar Java com HTML, o código fica muito poluído. Então vou até passar esse slide. Então, a gente viu que gente tem as páginas JSP é uma forma muito melhor de você apresentar as informações das suas aplicações Web. Então, ao invés de você pegar e dar print ali no servlet, misturando ali o código Java com o código HTML, você faz o que tem que fazer no servlet e depois passa ali o controle para as suas páginas JSP, apenas apresentarem as informações. Na próxima aula sobre MVC a gente vai falar pouquinho mais sobre essa divisão de responsabilidade. Por enquanto, vamos falar só mais pouquinho mais da página JSP. Então, que é que acontece? A gente tem ali cima a página JSP, o primeiro passo que acontece é uma tradução que vai transformar a página JSP numa classe Java, que vai gerar aquela página. Depois, essa classe Java ela é compilada, da mesma forma que todas as nossas classes são, e aí vai ocorrer o carregamento e inicialização e aquilo ali, tempo de execução dentro do Web Container, vai-se transformar servlet. Então, na verdade, a página JSP termos de execução ela vira servlet. E aí uma coisa importante é que vocês vão perceber, principalmente quando a gente está testando a nossa aplicação, que o primeiro acesso numa página JSP, ela demora sempre pouco mais. Porquê? Porque ele está fazendo esses passos de tradução e compilação. Isso acontece só no primeiro acesso. Numa aplicação profissional, você consegue pré compilar as páginas JSP para que você não tenha essa demora na primeira vez. Mas se você está tentando acessar e fala "Nossa está muito lento!" Você vai ver que essa lentidão é só na primeira vez, quando ele faz esses passos aí. Uma coisa importante é você, pela mensagem de erro que ele te fornecer quando acontecer alguma coisa, você prestar atenção quais desses pontos aqui que foi o erro. " foi no momento de transformar o JSP Java?" Então, talvez tenha algum comando JSP que ele não está entendendo. " foi no momento de compilar o código Java?" Então, talvez, sei lá, esteja tentando usar uma variável que não existe, coisas que podem acontecer tempo de compilação. E se o erro foi no momento de carregamento, então foi talvez erro que aconteceu aí tempo de execução. Então, a gente vai ver aqui os principais detalhezinhos que podem acontecer dentro de uma página JSP, os principais tipos de elementos. A gente não vai entrar muito no detalhe de cada porque o escopo desse curso é dar uma visão geral sobre esse básico de aplicações Web mas, vamos ver pouquinho aí de quais são as possíveis coisas que a gente pode ver dentro de uma página JSP. Então, a gente tem o scriptlet, que é esse entre o maior menor com percentagem ali, é como se ele pegasse o que está ali, então, eu vou referenciar bastante esse momento da tradução aqui, principalmente nesses três primeiros, que a gente vai entender como que ele traduz o JSP para o Java. Então, esse primeiro ali vai direto para o código, ele pega o que está dentro ali daquelas tags ali e bota direto no código Java que ele está gerando. A expressão, que é esse que tem o igual ali, ele vai para print. Então, ele vai pegar o que tem ali e jogar dentro de print. Por isso que o primeiro lá tem que ter ponto e vírgula e esse segundo aqui não precisa. E por fim, esse que tem uma exclamação ele vai para fora do método que ele está criando. Então, se você quiser declarar método ou uma variável, você vai utilizar essa declaração. Agora que a gente viu esses três, você vai esquecer isso aqui que, hoje dia, a gente não usa da mesma forma, se você usar esse tipo de coisa você também vai estar misturando código HTML com código Java. [TOSSE] Eu me abafo aqui só de pensar nisso, que é uma poluição danada no código. A gente tem a diretiva, a diretiva elas são como se fossem orientações que você passa para o Web Container para transformar a página num código Java. Então, a gente tem, por exemplo, alguns parâmetros de tradução, que a gente pode usar nessa diretiva page, por exemplo, para importar uma classe, dizer se é para ele criar ou não sessão, entre outros. E, que é bastante importante é esse que para você importar uma biblioteca de tags para você poder utilizar dentro do seu código. Por fim, por fim não, a gente tem mais coisa, a gente tem também a expression language, que é uma forma mais simplificada de acessar objetos no JSP. Então, no caso desse objeto pessoa ele poderia estar qualquer escopo, tanto na sessão quanto no request, que ele ia conseguir achar, ele procura primeiro no request, depois na sessão, depois na aplicação, o JSP ele também tem escopo próprio que é o page escope, que é na verdade o primeiro que ele procura, normalmente variáveis ali que são declaradas dentro da própria página JSP, mas se você quiser acessar uma variável de escopo especificado, não isso aqui tem duplicado, a gente vai ver aí no exercício como fazer isso. Tem jeito também de você referenciar session scope, request scope e aí a gente pode acessar. Por exemplo, eu quero acessar a propriedade nome de bean, eu quero chamar pessoa.get nome, ou eu quero acessar uma propriedade nome dentro de mapa, ou seja, eu tenho a chave nome e quero pegar o valor. Eu posso acessar desses dois jeitos, qualquer dos dois, o que é bem interessante. Então, a expression language é uma forma digamos aí, mais amigável de expressar isso daí. Para usar ela no JSP a gente usa aí símbolo de dinheiro, o cifrão, antes ali das expressões, como eu estou mostrando o exemplo. Eu vou sair aqui para vocês poderem ver melhor o código. Então, a gente tem também as bibliotecas de tag, a gente vê ali no exemplo do código a taglib ali que eu preciso estar importando e eu tenho aí por exemplo, o exemplo dessa biblioteca de tag o forEach, que ele faz ali a interação, então para cada da lista de usuário ele vai imprimir aquilo ali. Então, a gente nota aí que essa biblioteca de tag aí, no caso ela utiliza a expression language. Então, ele por exemplo, ali ele declara, ele está referenciando essa variável listUsuario, ele tem ali essa, ele está para cá do usuário, ele está colocando nessa variável usuário que está no escopo da página e aí ele referencia essa variável utilizando a expression language, com o cifrão e entre chaves ali o nome da variável. Então, assim isso daí é só para mostrar exemplo para vocês do uso aí da biblioteca de tags e ele está ali iterando ali dentro daquilo. Então, a gente tem o forEach, tem condicionais, tem várias ações que a gente pode estar fazendo aí dentro da página. Você utilizar uma biblioteca de tag, por exemplo, de controlo de fluxo, que se você procurar aí você vai encontrar bibliotecas de tags já meia que com componentes prontos, tabelas que já fazem ordenação, árvores, coisas já mais sofisticadas, você pode encontrar aí procurando bibliotecas de tags que já têm, já renderizam isso daí dentro da sua página a partir das informações que você passa para ele. Então, esse é tipo de coisa e eu, pelo menos, na minha opinião, fica muito melhor organizado e eu posso [INSPIRAÇÃO] respirar aliviado porque dessa forma o código não fica poluído. Então, muito obrigado, espero que vocês tenham conseguido entender como que as páginas JSP funcionam, todos os passos ali, e ter tido aí primeiro contato com os principais elemento desse tipo de página. Muito obrigado, até à próxima aula. [MÚSICA] [MÚSICA] [MÚSICA]