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.