Servlets+Cookies

3 respostas
J

Estou fazendo um aplicativo com gerenciamento de sessão utilizando cookies só que quando chamo a outra página ele retorna para página de login!!! Segue abaixo o código:

public void doPost(HttpServletRequest soli, HttpServletResponse resp)
throws ServletException, IOException{

String usuario = soli.getParameter("usuario");
    String senha = soli.getParameter("senha");
    
    if (login(usuario, senha)){
    
        //Chama o cookie do navegador Web
        Cookie cu = new Cookie("usuario", usuario);
        Cookie cs = new Cookie("senha", senha);
        resp.addCookie(cu);
        resp.addCookie(cs);
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        //resp.sendRedirect não pode ser usado aqui, use a Meta tag para 
        //redirecionar para o Servlet desejado
        out.println("<META HTTP-EQUIV=\"REFRESH\" CONTENT=3 URL=/teste >");
        
    }else{
        
        chamaLoginForm(resp, true);            
    }
}

Antes que alguém pergunte, não tem nada a ver com a parte do código contido no else!!! Ele executa o refresh como descrito nesta linha out.println("<META HTTP-EQUIV=“REFRESH” CONTENT=3 URL=/teste >");
só não chama a URL???

T+
JC

3 Respostas

R

Tipo, ali em

Cookie cu = new Cookie&#40;&quot;usuario&quot;, usuario&#41;; Cookie cs = new Cookie&#40;&quot;senha&quot;, senha&#41;; resp.addCookie&#40;cu&#41;; resp.addCookie&#40;cs&#41;;

Tu não tás chamando cookie, tás é setando um cookie.

Pra te falar a verdade, não entendi o teu código direito.

Onde tais lendo o cookie ?
Pra que usas ele ?

[]s

J

Caro renatopb,

na realidade, este código que postei é apenas um método onde é feito o redirecionamento, o métoto que chama os cookies é este login(usuario, senha), se for o caso eu posto o caso dos dois servlets, mas só poderei infelizmente, meio dia!!!

Como coloquei no tópico anterior, ele executa o refresh como descrito nesta linha out.println("<META HTTP-EQUIV=“REFRESH” CONTENT=3; URL=/teste >");
e inclusive dá o tempo especificado no “CONTENT”, só não chama a URL???

T+
JC

J

:martelada: :faca:
Segue abaixo as duas Classes Completas:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import STI.conecta.*;
import STI.conecta.TrataString;

public class cookieLoginServlet extends HttpServlet&#123;

    public void doGet&#40;HttpServletRequest soli, HttpServletResponse resp&#41;
                                          throws ServletException, IOException&#123;
    
        chamaLoginForm&#40;resp, false&#41;;
    &#125;
    
    public void doPost&#40;HttpServletRequest soli, HttpServletResponse resp&#41;
                                          throws ServletException, IOException&#123;
    
        String usuario = soli.getParameter&#40;&quot;usuario&quot;&#41;;
        String senha = soli.getParameter&#40;&quot;senha&quot;&#41;;
        
        if &#40;login&#40;usuario, senha&#41;&#41;&#123;
        
            //Chama o cookie do navegador Web
            Cookie cu = new Cookie&#40;&quot;usuario&quot;, usuario&#41;;
            Cookie cs = new Cookie&#40;&quot;senha&quot;, senha&#41;;
            resp.addCookie&#40;cu&#41;;
            resp.addCookie&#40;cs&#41;;
            resp.setContentType&#40;&quot;text/html&quot;&#41;;
            PrintWriter out = resp.getWriter&#40;&#41;;
            //resp.sendRedirect não pode ser usado aqui, use a Meta tag para 
            //redirecionar para o Servlet desejado
            out.println&#40;&quot;&lt;META HTTP-EQUIV=\&quot;REFRESH\&quot; CONTENT=3; URL=\'ContentServlet\' &gt;&quot;&#41;;
            
        &#125;else&#123;
            
            chamaLoginForm&#40;resp, true&#41;;            
        &#125;
    &#125;
        
    private void chamaLoginForm&#40;HttpServletResponse resp, boolean erro&#41;
                                        throws ServletException, IOException&#123;
        PrintWriter out = resp.getWriter&#40;&#41;;
        resp.setContentType&#40;&quot;text/html&quot;&#41;;
        
        out.println&#40;&quot;&lt;HTML&gt;&quot;&#41;;
        out.println&#40;&quot;&lt;HEAD&gt;&quot;&#41;;
        out.println&#40;&quot;&lt;TITLE&gt;Login&lt;/TITLE&gt;&quot;&#41;;
        out.println&#40;&quot;&lt;/HEAD&gt;&quot;&#41;;
        out.println&#40;&quot;&lt;BODY&gt;&quot;&#41;;
        out.println&#40;&quot;&lt;CENTER&gt;&quot;&#41;;
        
        if&#40;erro&#41;&#123;
        
            out.println&#40;&quot;&lt;B&gt;Falha no Login&lt;/B&gt; Por favor tente novamente&lt;BR&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;BR&gt;Se voce tiver digitado corretamente seu nome de&quot;+
                        &quot;&lt;B&gt; Usuário e Senha&lt;/B&gt;, seu navegador não está&quot; +
                        &quot; setado para utilizar &lt;B&gt;Cookies&lt;/B&gt;&lt;BR&gt;&lt;BR&gt; Click &quot; +
                        &quot;&lt;A HREF=InfoPage.html&gt;aqui&lt;/A&gt; para mais informaçoes&quot;+
                        &quot; de como habilitar e setar os Cookies &lt;BR&gt;&quot;&#41;;
        &#125;
            out.println&#40;&quot;&lt;BR&gt;&lt;BR&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;H2&gt;Página de Acesso&lt;/H2&gt;&lt;BR&gt;&quot;&#41;;
            out.println&#40;&quot;Entre com seu nome de &lt;B&gt;usuário e senha&lt;/B&gt;&lt;BR&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;BR&gt;&lt;FORM METHOD=POST&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;TABLE&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;TR&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;TD&gt;Usuário&#58;&lt;/TD&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;TD&gt;&lt;INPUT TYPE=TEXT NAME=usuario &gt;&lt;/TD&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;TD&gt;Senha&#58;&lt;/Td&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;TD&gt;&lt;INPUT TYPE=PASSWORD NAME=senha &gt;&lt;/TD&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;/TR&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;TR&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;TD ALIGN=RIGHT COLSPAN=2&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;TD&gt;&lt;INPUT TYPE=SUBMIT VALUE=Acessar&gt;&lt;/TD&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;/TR&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;/TABLE&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;/FORM&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;/CENTER&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;/BODY&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;/HTML&gt;&quot;&#41;;
        
    &#125;
    
    public static boolean login&#40;String usuario, String senha&#41;&#123;
        
        try&#123;
             Conecta con = new Conecta&#40;&#41;;
             con.conecta&#40;&#41;;
             String Consulta = &quot;SELECT USUARIO,SENHA from \&quot;Login\&quot; where &quot; +
                                &quot;&#40;USUARIO='&quot;+TrataString.trataSql&#40;usuario&#41;+&quot;'&#41;&quot;+
                                &quot;AND &#40;SENHA='&quot;+TrataString.trataSql&#40;senha&#41;+&quot;'&#41;&quot;;
                                            
            ResultSet rs = con.Query&#40;Consulta&#41;;
            
            if&#40;rs.next&#40;&#41;&#41;&#123;
                
                rs.close&#40;&#41;;
                return true;
            &#125;
           
        &#125;
        catch&#40;SQLException e&#41;&#123;
            System.out.println&#40;&quot;Erro na Consulta&#58;&quot; + e.toString&#40;&#41;&#41;;
        &#125;
        catch&#40;Exception e&#41;&#123;
            System.out.println&#40;&quot;ffffffffffff&quot;+e.toString&#40;&#41;&#41;;
        &#125;
        return false;
    &#125;

&#125;

******************************************************

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;


public class ContentServlet extends HttpServlet&#123;
    
    public String loginUrl = &quot;/teste&quot;;
    
    //Processo no HTTP Get request - Pega solicitaçao
    public void doGet&#40;HttpServletRequest soli, HttpServletResponse resp&#41;
                                         throws ServletException, IOException&#123;
                           
        Cookie&#91;&#93; cookies = soli.getCookies&#40;&#41;;
        int length = cookies.length;
        String usuario = null;
        String senha = null;
        
        for&#40;int i=0; i&lt;length; i++&#41;&#123;
        
            Cookie cookie = cookies&#91;i&#93;;
            if&#40;cookie.getName&#40;&#41;.equals&#40;&quot;usuario&quot;&#41;&#41;&#123;
                
                usuario = cookie.getValue&#40;&#41;;
                
            &#125;else if&#40;cookie.getName&#40;&#41;.equals&#40;&quot;senha&quot;&#41;&#41;&#123;
                
                senha = cookie.getValue&#40;&#41;;
            &#125;
        &#125;
        if&#40;&#40;usuario==null&#41; || &#40;senha==null&#41; || 
                                   !&#40;cookieLoginServlet.login&#40;usuario,senha&#41;&#41;&#41;&#123;
                                       
            resp.sendRedirect&#40;loginUrl&#41;;                       
        &#125;
            PrintWriter out = resp.getWriter&#40;&#41;;
            out.println&#40;&quot;&lt;HTML&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;HEAD&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;TITLE&gt;Teste Cookie&lt;/TITLE&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;/HEAD&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;BODY&gt;&quot;&#41;;
            out.println&#40;&quot;JCJCJCJCJCJCJCJCJCJCJCJC&quot;&#41;;
            out.println&#40;&quot;&lt;/BODY&gt;&quot;&#41;;
            out.println&#40;&quot;&lt;/HTML&gt;&quot;&#41;;
    &#125;

    public void doPost&#40;HttpServletRequest soli, HttpServletResponse resp&#41;
                                         throws ServletException, IOException&#123;

        doGet&#40;soli, resp&#41;;

    &#125;  
&#125;
Criado 6 de outubro de 2004
Ultima resposta 8 de out. de 2004
Respostas 3
Participantes 2