21
Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Embed Size (px)

Citation preview

Page 1: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Programação para Web

Unidade 5 – Integrando JSP e Servlets

Prof.: Henrique Santos

Page 2: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Introdução Existem casos onde queremos que o

Servlet tenha somente a responsabilidade de fazer algum processamento e deixe a geração da interface para o JSP (ou um HTML).

Nestes casos, seria melhor o Servlet redirecionar a geração da saída.

Page 3: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Redirecionamento de Resposta

Page 4: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

RequestDispatcher RequestDispatcher é a classe

principal usada no redirecionamento de respostas do Servlet.

Deve-se passar como parâmetro para qual página será redirecionado

Sintaxe Inicial:RequestDispatcher Rd = request.getRequestDispatcher ("pagina.jsp");

Page 5: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Redirecionamento Foward A primeira forma de redirecionar para

a página do RequestDispatcher é usando o método foward

O foward desconsidera qualquer saída do Servlet via ‘out.print’, ou outras saídas.

Page 6: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Exemplo Fowardprotected void processRequest

(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

PrintWriter out = response.getWriter();

String Login=request.getParameter("login"); String Senha=request.getParameter("senha");

if(Login.equals("admin") && Senha.equals("prognet")){ //Faça algum código de Login aqui e depois vá para página Inicial RequestDispatcher Rd = request.getRequestDispatcher("inicio.jsp"); Rd.foward(request, response); else{ //Usuário ou Senha incorretos, retornar ao Login RequestDispatcher Rd = request.getRequestDispatcher("login.jsp"); Rd.foward(request, response); out.println("Login ou Senha incorretos."); //Isso será ignorado //porque a estamos usando o método foward } out.close();}

Page 7: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Redirecionamento Include O método include adiciona o

conteúdo da página a saída do Servlet.

A saída do Servlet NÃO é desconsiderada.

Pode-se inclusive adicionar múltiplas páginas juntamente com os métodos ‘out.print’ do Servlet para formar a saída.

Page 8: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Exemplo Includeprotected void processRequest

(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

PrintWriter out = response.getWriter();

String Login=request.getParameter("login"); String Senha=request.getParameter("senha");

if(Login.equals("admin") && Senha.equals("prognet")){ //Faça algum código de Login aqui e depois vá para página Inicial RequestDispatcher Rd = request.getRequestDispatcher("inicio.jsp"); Rd.foward(request, response); else{ //Usuário ou Senha incorretos, retornar ao Login RequestDispatcher Rd = request.getRequestDispatcher("login.jsp"); Rd.include(request, response); out.println("Login ou Senha incorretos."); //Agora essa mensagem

// irá aparecer porque a estamos usando o método include } out.close();}

Page 9: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

response.sendRedirect Outra forma de fazer

redirecionamento é usar o método sendRedirect do objeto response

Esse redirecionamento é similar ao foward, e ignora qualquer saída do Servlet

Page 10: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Exemplo sendRedirectprotected void processRequest

(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

PrintWriter out = response.getWriter();

String Login=request.getParameter("login"); String Senha=request.getParameter("senha");

if(Login.equals("admin") && Senha.equals("prognet")){ //Faça algum código de Login aqui e depois vá para página Inicial response.sendRedirect("inicio.jsp"); else{ //Usuário ou Senha incorretos, retornar ao Login response.sendRedirect("login.jsp"); out.println("Login ou Senha incorretos."); //Isso será ignorado //porque a estamos usando o response.sendRedirect } out.close();}

Page 11: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

sendRedirect x foward A utilização do response.sendRedirect

apresenta várias diferenças práticas se comparada com o método forward do RequestDispatcher:

• A URL na barra de endereços do navegador reflete o alvo especificado

• Dados armazenados no objeto de requisição anterior são descartados

• Pode ser encontrado na classe HttpServletResponse (da qual o objeto response faz parte)

Page 12: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Inclusão de Páginas

Page 13: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Inclusão em Servlets Basta o usar o método include do

objeto RequestDispatcher Permite a montagem dinâmica de

páginas usando vários arquivos diferentes

Exemplo•RequestDispatcher Rd = request.getRequestDispatcher ("pagina.jsp");

Rd.include (request, response);

Page 14: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

RequestDispatcher em JSP RequestDispatcher não funciona da

mesma forma em JSP Os métodos include são resolvidos

antes da página principal que está chamando

Page 15: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Inclusão em JSP Sintaxe

•<jsp:include page= "URL Relativa" /> Objetivo

•Reutilizar conteúdo JSP, HTML, ou simplesmente texto

•Permitir atualizações no conteúdo incluído sem afetar as páginas JSP principais

Page 16: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Inclusão em JSP O conteúdo JSP não afeta a página

principal: somente a saída da página JSP incluída é utilizada

Não se esqueça de utilizar / no final da tag JSP

URLs relativas que iniciam com barra (/) são interpretadas relativas à aplicação, não relativo ao diretório raiz do servidor

Muito mais fácil, prático e funcional do que usar o RequestDispatcher

Page 17: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Exemplo 1 – chuckfatos.jsp<html> <head> <link rel="stylesheet" type= "text/css" href="aula.css"/> </head>

<body><h1> Fatos sobre o Chuck Norris </h1><p>Aqui estão alguns fatos sobre o Chuck Norris o maior DBA de todos os tempos:</p>

<ol><li><jsp:include page="/fato1.html" /> </li><li><jsp:include page="/fato2.html" /> </li><li><jsp:include page="/fato3.html" /> </li></ol></body></html>

Page 18: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Terceira Página IncluídaDELETE FROM CHUCK_NORRIS. <br/>Not Found. (Ele está atras de você, a ponto de dar um Roundhouse Kick!!!)

Note que a página não é um documento HTML completo; ela apenas contém tags apropriadas ao local onde será inserida

Page 19: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Exemplo 1

Page 20: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Acrescentando Parâmetros Código

• <jsp:include page="/fatos.jsp"> <jsp:param name="numero" value="1" /> </jsp:include>

Equivalente• http://localhost:8080/fatos.jsp?numero=1

A página incluída seria a mesma página com o parâmetro passado via GET

Page 21: Programação para Web Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos

Exemplo 2<html><head> <link rel="stylesheet" type= "text/css"

href="aula.css"/> </head> <body><h1> Fatos sobre o Chuck Norris </h1> <p> Aqui estão alguns fatos sobre o Chuck Norris o

maior DBA de todos os tempos: </p><ol><li><jsp:include page="/fatos.jsp"> <jsp:param name="numero" value="1" /> </jsp:include> </li><li><jsp:include page="/fatos.jsp"> <jsp:param name="numero" value="2" /> </jsp:include> </li><li><jsp:include page="/fatos.jsp"> <jsp:param name="numero" value="3" /> </jsp:include> </li></ol></body></html>