Introdução a JavaServer Pages Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Desenvolvimento de sistemas web
JavaServer Pages Problemas com Servlets: É improdutivo para gerar todo o conteúdo dinâmico de uma aplicação web. Inviável para web designers que não são programadores. Mistura código Java com HTML. JSP é a tecnologia que permite a geração dinâmica de HTML de forma mais direta. 2
Scriptlets Recurso que permite a inserção de código Java em uma JSP. Para escrever código abrimos a tag <% %>. Para gerar uma saída na página JSP usamos a tags <%= %>. Para importar classes Java usamos a diretiva: <%@ page import = pacote.classe %> Similar à programação com PHP ou ASP clássico. 3
Exemplo 1 exemplo1.jsp O Eclipse possui um assistente para criação de páginas JSP. Clique com o botão direito sobre a raiz do projeto e selecione New > JSP File. 4
Exemplo 1 Resultado 5
Expression Language (EL) Scriptlets estão em desuso. A mistura de código Java com HTML nas páginas JSP levou a aplicações de difícil manutenção. EL permite a criação de páginas mais limpas, além de favorecer o modelo MVC ao facilitar a integração com Servlets. Código EL é inserido com as marcações ${ }. Com EL é possível escrever expressões (aritméticas, lógicas e relacionais), acessar atributos de objetos e elementos de coleções. 6
Exemplo 2 Servlet 7
Exemplo 2 Servlet Insere o valor de soma no escopo de requisição. Note que é possível inserir qualquer tipo de objeto Java. 8
Exemplo 2 Servlet Direciona o fluxo da aplicação para a página exemplo2.jsp. 9
Exemplo 2 exemplo2.jsp 10
Exemplo 2 exemplo2.jsp Obtém o objeto nomeado como soma no escopo de requisição. 11
Exemplo 2 Resultado 12
Alguns objetos implícitos da EL Objeto param requestscope sessionscope applicationscope Descrição Disponibiliza os parâmetros da requisição HTTP. Disponibiliza os objetos inseridos no escopo de requisição. Existe apenas durante a requisição HTTP. Para cada requisição, é criada uma instância. Disponibiliza os objetos inseridos no escopo de sessão. Existe enquanto durar a sessão do cliente web. Para cada sessão é criada uma instância. Disponibiliza os objetos inseridos no escopo de aplicação. É criada uma única instância quando a aplicação é iniciada. 13
Prática Exercitando os escopos. Implemente o servlet e a página a seguir: Servlet: 14
Prática pratica.jsp: 15
Prática Execute a aplicação e acesse a página de forma direta (use pagina.jsp como URL). Repare que todos os campos estão vazios. Isto se explica porque o servlet ainda não foi acessado, e portanto os objetos requestscope, sessionscope e applicationscope não foram preenchidos. 16
Prática Acesse o servlet informando um valor para o parâmetro nome. Repare que agora a página exibe todos os campos preenchidos com o mesmo valor. 17
Prática Novamente, acesse a página de forma direta. Repare que o objeto requestscope não manteve o valor do atributo ultimonome. Isto acontece porque sempre que o navegador acessa a página é criada uma nova requisição HTTP, bem como um novo objeto requestscope. 18
Prática Usando outro navegador (ou fechando e abrindo o navegador atual), acesse a página de forma direta. Note que desta vez o campo Sessão está vazio. Isto acontece porque a sessão HTTP está associada ao navegador. Logo, a sessão associada a um navegador é diferente da sessão associada a outro navegador. Repare que o campo Aplicação manteve seu valor. O objeto applicationscope é mantido durante toda a existência da aplicação, sendo compartilhado por todos os clientes. 19
Prática Reinicie o servidor e acesse a página de forma direta. Note que o objeto applicationscope foi reinicializado. Entretanto, repare que o campo Sessão manteve seu valor. O que isso sugere? 20
Exercício Implemente um contador de acessos da aplicação. O contador deve ser atualizado sempre que a URL raiz (/) da aplicação for acessada. Inclua uma página que exiba a contagem de acessos. 21
Referências Caelum. Apostila Java para desenvolvimento web. Disponível em <http://www.caelum.com.br/apostilajava-web/>. Oracle. The Java EE 5 Tutorial. Disponível em <http://docs.oracle.com/javaee/5/tutorial/doc/bnah q.html#bnaij>. JournalDev. JSP Expression Language (EL) Example Tutorial. Disponível em <http://www.journaldev.com/2064/jsp-expressionlanguage-el-example-tutorial>. 22