0% acharam este documento útil (0 voto)
40 visualizações11 páginas

Java Server Pages

O documento discute Java Server Pages (JSPs), abordando: 1) O que são JSPs e como eles geram servlets; 2) Elementos de JSPs como scriplets, expressions e declarations; 3) Diretivas como include, taglib e page; 4) Ações JSP; 5) Objetos implícitos; 6) Páginas de erro e inicialização/destruição de JSPs.

Enviado por

antony santos
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
40 visualizações11 páginas

Java Server Pages

O documento discute Java Server Pages (JSPs), abordando: 1) O que são JSPs e como eles geram servlets; 2) Elementos de JSPs como scriplets, expressions e declarations; 3) Diretivas como include, taglib e page; 4) Ações JSP; 5) Objetos implícitos; 6) Páginas de erro e inicialização/destruição de JSPs.

Enviado por

antony santos
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 11

Java Web com Servlets e JSPs

Java Server Pages

Tópicos Abordados

• O que é
• Elementos de um JSP
– Scriplets
– Expressions
– Declarations
• Diretivas do JSP
– Include
– Taglib
– Page
• JSP Actions
• Objetos implícitos
• Páginas de erro
• Inicialização e destruição de JSPs
• Passando parâmetros para JSPs

O Que É

• Um documento HTML é estático


• Para criar respostas dinâmicas em Java,
existem os servlets
– Dependendo da resposta, é bastante difícil
codificá-la usando servlets
• Surgiram os JSPs
– Java Server Pages
– HTML + Código Java

1
Exemplo de JSP
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%
List<String> l = new ArrayList<String>();
l.add("Arroz");
l.add("Feijão");
l.add("Batata");
%>
<html>
<body>
<H1>Lista de Compras</H1>

<ul>
<% for (String item : l) { %>
<li><%= item %></li>
<% } %>
</ul>
</body>
</html>

Exemplo de JSP

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"


"http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<H1>Lista de Compras</H1>
<ul>
<li>Arroz</li>
<li>Feijão</li>
<li>Batata</li> Na resposta que chega ao
</ul>
cliente, o documento é 100%
</body>
</html> HTML

O Que é Realmente um JSP?

• Um JSP é na verdade um servlet!

tradução compilação inicialização Servlet


lista_compras.jsp lista_compras_jsp.java lista_compras_jsp.class

Desenvolvedor Container

Este processo só ocorre


na primeira vez que o
JSP é acessado

2
Scriptlets

• São códigos Java inseridos no JSP


• Não estão presentes no HTML resultante
• Um scriptlet deve começar com <% e
terminar com %>
<%
List<String> l = new ArrayList<String>();
l.add("Arroz");
l.add("Feijão");
l.add("Batata");
%>

O ponto-e-vírgula é
necessário aqui

Expressions

• Também são códigos Java inseridos no JSP


• São convertidas em texto no HTML
resultante
• Uma expression deve começar com <%= e
terminar com %>
<ul>
<% for (String item : l) { %>
<li><%= item %></li>
<% } %>
</ul>

Uma expression deve Expressions não


sempre resultar recebem ponto-e-
numa string vírgula

Declarations

• Também são códigos Java inseridos no JSP


• Usadas para declarar atributos e métodos
de instância
• Uma declaration deve começar com <%! e
terminar com %>

<%! int id = 0; %>

<%! Não esqueça de


int getId() { colocar ponto-e-vírgula
return id;
}
%>

3
Detalhes do Servlet Gerado

Servlet
public class area_jsp extends HttpJspBase {

public void _jspService(


HttpServletRequest request,
HttpServletResponse response)
throws java.io.IOException, ServletException {

PrintWriter out = response.getWriter();


JSP response.setContentType("text/html");

<html><body> out.write("<html><body>");
<% int lado = 10; %> int lado = 10;
A área do quadrado é: out.write("A área do quadrado é: ");
<%= lado * lado %> out.print(lado * lado);
</body></html> out.write("</body></html>");
}

Scriptets são Expressions são traduzidas


traduzidos da forma como parâmetros para o
como são escritos out.print()

10

Detalhes do Servlet Gerado

Servlet
public class area_jsp extends HttpJspBase {
int lado = 10;

JSP int calcularArea() {


return lado * lado;
<html><body> }
<%! int lado = 10; %>
<%! public void _jspService(
int calcularArea() { HttpServletRequest request,
return lado * lado; HttpServletResponse response)
} throws java.io.IOException, ServletException {
%>
Á área do quadrado é: PrintWriter out = response.getWriter();
<%= calcularArea() %> response.setContentType("text/html");
</body></html>
out.write("<html><body>");
out.write("A área do quadrado é: ");
out.print(calcularArea());
Declarations são out.write("</body></html>");
traduzidas como }
atributos e métodos

11

Comentários em JSP

• Dentro de scriptlets, os comentários


seguem o padrão do Java
<% <%
//este é um comentário /* este é um comentário */
int x = 0; int x = 0;
%> %>

• Fora dos scriptlets, deve ser usada outra


notação
<%-- este é um comentário %>

12

4
Diretivas do JSP

• JSP possui 3 tipos de diretivas (directives)


• Elas são identificadas por começarem por
<%@ e terminarem por %>

Diretiva Descrição
include Inclui código de um arquivo externo no JSP
taglib Define uma tag library
page Define propriedades da página

13

A Diretiva Include

• Permite incluir um arquivo externo na


criação do JSP
• A inclusão é feita durante a fase de tradução
– O servlet gerado já contém o conteúdo incluído

<%@ include file="inc/header.jsp" %>

14

A Diretiva Taglib

• Permite referenciar tag libraries na página


– Tag libraries são bibliotecas de tags
– Utilizadas para simplificar algumas tarefas e
esconder o código Java

<%@ taglib uri="http://www.softblue.com.br/tags" prefix="sb" %>

<sb:loop id="item" value="lista">


...
</sb:loop>

15

5
A Diretiva Page

• Define propriedades específicas da página


JSP
• É composta por diversos atributos
– language
– contentType
– pageEncoding
– import
– isErrorPage
– errorPage

16

A Diretiva Page

• Os atributos language, contentType e


pageEncoding definem a linguagem e
codificação

<%@ page language="java"


contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" %>

17

A Diretiva Page

• O atributo import é utilizado para importar


classes e/ou pacotes que serão usados no
JSP
• Funciona de forma bastante semelhante ao
import do Java
<%@ page import="java.util.List" %>

<%@ page import="java.util.List, java.util.ArrayList" %>

<%@ page import="java.util.*" %>

18

6
A Diretiva Page

• Por padrão, alguns imports já são realizados


– java.lang.*
– javax.servlet.*
– javax.servlet.jsp.*
– javax.servlet.http.*

19

JSP Actions

• Funcionalidades para melhorar a


produtividade no desenvolvimento
• São definidas pelas tags no formato
<jsp:action>
Action Descrição
<jsp:include> Inclui outro JSP para renderização
<jsp:forward> Redireciona a requisição para outro local
<jsp:param> Cria parâmetros no JSP
<jsp:getProperty> Recupera a propriedade de um Java Bean
<jsp:setProperty> Atribui um valor a uma propriedade de um Java Bean
<jsp:useBean> Referencia um Java Bean no JSP

20

A action <jsp:include>

• Inclui o conteúdo de outro arquivo (HTML,


JSP, servlet, etc.)
• A inclusão é feita durante a renderização
– A diretiva <%@ include %> faz a inclusão na
fase de tradução

<html>
Inclui o arquivo
<body>
<jsp:include page="header.jsp" /> header.jsp na geração do
... HTML de retorno
</body>
</html>

21

7
A action <jsp:forward>

• Permite redirecionar a requisição para outro


local
– HTML, JSP, servlet, etc.

<jsp:forward page="result.jsp" />

Redireciona para o
arquivo result.jsp

22

Objetos Implícitos

• Como um JSP é um servlet, ele possui


acesso à objetos que um servlet acessaria
• Estes objetos existem de forma implícita no
JSP

23

Objetos Implícitos

Objeto Implícito Classe do Objeto


out JspWriter Dados na saída
application ServletContext
Configuração
config ServletConfig
exception JspException Apenas para páginas de erro
request HttpServletRequest
response HttpServletResponse
session HttpSession Escopo de dados
pageContext PageContext
page Object

24

8
Páginas de Erro

• Os atributos isErrorPage e errorPage


possibilitam o direcionamento para uma
página de erro caso alguma exceção
inesperada ocorra
• isErrorPage deve ser usado pela página que
representa a página de erro
• errorPage deve indicar uma página de erro
para que haja o redirecionamento no caso de
erro

25

Páginas de Erro

lista_compras.jsp
<%@ page errorPage="error.jsp" %>

<html>
<body>
<%
Object o = null;
o.toString();
%>
</body>
</html>

O atributo errorPage define


Este código vai gerar uma
qual JSP chamar em caso de
NullPointerException
exceção

26

Páginas de Erro

error.jsp
<%@ page isErrorPage="true" %>

<html>
<body>
<H1>Erro no Sistema</H1>
<STRONG>Mensagem: </STRONG><%= exception.toString() %>
</body>
</html>

Uma página de erro possui um objeto


implícito chamado exception, que
representa a exceção ocorrida

27

9
Inicialização e Destruição de JSPs

• Em servlets, o container chama os métodos


– init(): ao inicializar o servlet
– destroy(): ao destruir o servlet
– service(): ao atender uma requisição
• Como um JSP é um servlet, o container
também chama métodos semelhantes
– jspInit(): ao inicializar o JSP
– jspDestroy(): ao destruir o JSP
– _jspService(): ao atender uma requisição

28

Inicialização e Destruição de JSPs

• É possível sobrescrever os métodos


jspInit() e jspDestroy()
• O método _jspService() não deve ser
sobrescrito

<%!
Usar declaration public void jspInit() {
//inicializar o que for necessário
}

public void jspDestroy() {


//destruir o que for necessário
}
%>

29

Passando Parâmetros para JSPs

• Assim como servlets, JSPs também podem


receber parâmetros de inicialização

web.xml
<servlet>
<servlet-name>ListaCompras</servlet-name>
<jsp-file>/lista_compras.jsp</jsp-file>
<init-param>
<param-name>moeda</param-name>
<param-value>R$</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ListaCompras</servlet-name>
<url-pattern>/lista_compras.jsp</url-pattern>
</servlet-mapping>

30

10
Passando Parâmetros para JSPs

lista_compras.jsp
<html><body>
Moeda: <%= config.getInitParameter("moeda") %>
</body></html>

O objeto implítico config acessa o


ServletConfig do servlet

31

Não use código Java em JSPs

• Apesar de JSPs terem sido criados para


possibilitar a mistura de HTML e código Java,
escrever código Java em JSPs não é uma
boa prática
– Dificulta o trabalho de web designers, que não
são programadores
– Para páginas complexas, o código fica confuso
– Dificuldade de manutenção

32

Não use código Java em JSPs

• Qual a alternativa?
– EL (Expression Language)
– JSTL (Java Server Pages Standard Tag Library)
– Tag libraries customizadas

33

11

Você também pode gostar