Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Desenvolvimento de Software para WEB Fundamentos de JSP (JavaServer Pages) Prof. Regis Pires Magalhães regispires@lia.ufc.br Agradecimentos • Agradecemos ao Prof. Fábio Dias (UFC Quixadá) por ter gentilmente cedido seus slides para adaptação e uso nesta disciplina. Introdução • Com o uso de Servlets o desenvolvedor se vê obrigado a inserir HTML no código Java • Gerar HTML a partir de classes Java em geral é muito trabalhoso e pouco produtivo: • Os designers precisariam se envolver na codificação de classes Java (Servlets). Exemplo <%@ page import="java.text.SimpleDateFormat, java.util.Calendar;" %> <html><head><title>JSP</title></head><body> <% Calendar c = Calendar.getInstance(); String hoje = SimpleDateFormat.getInstance().format( c.getTime()); %> Hoje é <%=hoje%> </body></html> JSP – JavaServer Pages • Similar ao ASP e PHP. • Permite usar o HTML de forma direta, e que também vá possibilitar a utilização do Java. • Dentro de um arquivo JSP podemos escrever também código Java, para adicionar comportamento dinâmico, como declaração de variáveis, condicionais (if), loops (for, while), etc. • JSP foi feito apenas para apresentar o resultado, e ele não deveria fazer acessos a banco de dados e nem fazer a instanciação de objetos. Divisão de funções entre JSP e Servlets • Servlet •fica responsável pela lógica de negócios (ou regras de negócio). • JSP deve ficar com a lógica de apresentação. Tradução • As JSP são traduzidas para Servlet e compiladas no momento de execução: JSP –Elementos de Script <% código %> • Scriptlets <% código %> • Expressões <%= expressão %> • Declarações de métodos e variáveis <%! código %> • Comentários <%-- código --%> Scriptlet • Scriptlet é o código escrito entre <% e %> . • Nome composto da palavra script (pedaço de código em linguagem de script) com o su•fixo let, que indica algo pequeno. JSP –Elementos de Script Scriptlets - Exemplo ... <% código Java %> ... <% String nome = request.getParameter(“NOME”) %> ... <% String mensagem = "Bem vindo!"; %> JSP –Elementos de Script Scriptlets - Exemplo <h2>JSP URI, URL, Context</h2> Request Context Path: <%= request.getContextPath() %> Request URI: <%= request.getRequestURI() %> Request URL: <%= request.getRequestURL() %> JSP URI, URL, Context Request Context Path: /test Request URI: /test/uriTest.jsp Request URL: http://localhost:8080/test/uriTest.jsp JSP –Elementos de Script Scriptlets - Exemplo JSP –Elementos de Script Scriptlets - Exemplo • Com JSP é possível trabalhar o HTML dentro das estruturas de controle Java: <h1>Seja bem vindo !</h1> <% for(int i = 0; i < 10; i++){%> <p>Tenha um bom dia!</p> <% } %> <h2>Essa página foi desenvolvida para...</h2> JSP – Elementos de Script Expressões • Expressões Java que retornam um valor convertido em String • É usado para inserir no HTML gerando valores dinâmicos determinados pela aplicação <%= expressão %> <%= myBean.getName() %> Hoje é <%= new java.util.Date() %> JSP – Elementos de Script Expressões - Exemplo <% java.util.Date d = new java.util.Date(); String hoje = java.text.DateFormat.getDateInstance(). format(d); %> <h1>Bom dia! A data de hoje é <%=hoje%> </h1> <h2>Contando até 10 ... </h2> <% for (int i = 1; i <= 10; i++) { %> Numero <b> <%=i%> </b><br/> <% } %> ... Exemplo <?xml version="1.0" encoding="UTF-8" ?> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <body> <%-- comentário em JSP aqui: nossa primeira página JSP --%> <% String mensagem = "Bem vindo ao sistema de agenda"; %> <% out.println(mensagem); %><br /> <% String desenvolvido = "Desenvolvido por João"; %> <%= desenvolvido %><br /> </body> </html> JSP –Elementos de Script Declarações • Variáveis e métodos que são inseridos no código do servlet gerado, fora do método jspService(). <%! int i = 0; %> <%! public void function() { //código } %> <%! código %> JSP –Elementos de Script Declarações - Exemplo <%! int acessos = 0; %> <h2>Essa página JSP já foi acessada:</h2> <h1> <%= numAcessos( )%> </h1> <h2>Seja bem vindo!!</h2> <%! private int numAcessos( ) { acessos++; return acessos; } %> JSP –Elementos de Script Variáveis Pré-Definidas • São variáveis pré-existentes em uma página JSP criadas para facilitar o desenvolvimento. Nome Classe Descrição application ServletContext Contexto da aplicação session HttpSession Sessão do usuário request HttpServletRequest Representação da requisição response HttpServletResponse Representação da resposta out JspWriter Writer da página exception Throwable Exceção recebida se for página de erro JSP –Elementos de Script Variáveis Pré-Definidas - Exemplo ... <form method="get" action="frase.jsp" > Escreva uma palavra: <input type="text" name="palavra"/><br> <input type="submit" name="enviar" value="Enviar"> </form> ... JSP –Elementos de Script Variáveis Pré-Definidas - Exemplo <% String palavra = request.getParameter("palavra"); String frase = (String)session.getAttribute("frase"); if(palavra == null || frase == null){ frase = ""; } frase = frase + " " + palavra; session.setAttribute("frase", frase) ; %> <h1> Frase:<%=frase%></h1> EL: Expression Language • Ajuda a remover código Java da página JSP. • Simplifica a apresentação de parâmetros e atributos provenientes de Servlets: ▫ ${param.idade} ▫ ${nome} <html> Testando seus parâmetros:<br/> A idade é ${param.idade}. </html> JSP – Diretivas - Tipos • As diretivas definem informações gerais sobre a página JSP <%@ diretiva atributo=“valor” %> • As diretivas são: – page • Permite especificar configurações do Servlet gerado. – include • Permite a inclusão de um arquivo no Servlet durante a geração deste. – taglib • Permite o uso de tags definidas pelo desenvolvedor. JSP – Diretivas - Page • import ▫ Define as classes importadas pelo Servlet da JSP separadas por vírgula <%@ page import="java.text.SimpleDateFormat, java.util.Calendar;" %> <%@ page import="java.text.SimpleDateFormat, java.util.Calendar;" %> <html><head><title>JSP</title></head><body> <% Calendar c = Calendar.getInstance(); String hoje = SimpleDateFormat.getInstance().format( c.getTime()); %> Hoje é <%=hoje%> </body></html> JSP – Diretivas - Page JSP – Diretivas - Page • errorPage=“url” ▫ Especifica uma página que deve processar as exceções disparadas na página <%@ page errorPage=“paginaErro.jsp" %> <%@ page errorPage="paginaErro.jsp" %> • isErrorPage=“true|false” – Especifica se a página corrente é uma página de tratamento de erros(exceções) <%@ page isErrorPage="true" %> JSP – Diretivas - Page <%@ page errorPage="paginaErro.jsp" %> <html><head><title>JSP</title></head><body> <% if(request.getParameter("nome") == null) { throw new ServletException("Nome nao especificado"); } %> <h1>Ola, <%=request.getParameter("nome")%></h1> </body></html> JSP – Diretivas - Page <%@ page isErrorPage="true" %> <html><head><title>JSP</title></head> <body> Ocorreu um erro: <%=exception.getMessage()%><br> </body></html> JSP – Diretivas - Include • Indicada para inclusão de partes comuns a várias páginas como cabeçalhos ou rodapés. <html> <title>Curso de JSP</title> <body> <%@ include file="cabecalho.html" %> . . . <%@ include file=“url" %> JSP – Diretivas - Include - Exemplo <html><head><title>JSP</title> </head><body> <%@ include file="cabecalho.jsp" %> <h1>Continuação</h1> </body></html> <h1>Cabeçalho da página</h1> cabecalho.jsp index.jsp Arquitetura de aplicações Exercícios 1. Implemente um JSP utilizando Scriptlets que imprime 20 “Tenha um Bom Dia” sendo que para os item pares seja com a cor Azul e para os impares de vermelho. 2. Crie uma aplicação com carrinho de compras utilizando páginas JSP e Servlets. Teremos duas páginas jsp: index.jsp e carrinho.jsp. ▫ index.jsp envia a requisição para um Servlet. ▫ O servlet faz o redirecionamento para carrinho.jsp, exibindo todos os produtos do carrinho.