View
218
Download
1
Category
Preview:
Citation preview
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.
Redirecionamento de Resposta
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");
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.
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();}
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.
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();}
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
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();}
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)
Inclusão de Páginas
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);
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
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
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
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>
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
Exemplo 1
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
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>
Recommended