Dúvida sobre session

4 respostas
somma

Olá pessoal, estava com dúvidas sobre Session a uns dias atrás e implementei o seguinte servlet no modelo de arquitetura MVC.

Segue o esquema abaixo:

index.jsp - Dados digitados pelo usuario

Servlet - Validar dados digitados. Se dados invalidos redirecionar para index.jsp relatando o erro, senão, redirecionar para pagina userlogado.jsp

Esse ó o Servlet de de Controller:

import java.io.IOException;
import java.util.Iterator.*;
import javax.servlet.ServletRequest;
import javax.servlet.*;


/**
 *
 * @author Andre Somma
 * Data: 31/10/2006
 */
public class LoginUser extends GenericServlet {
    
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        String nome = request.getParameter("login");
        String senha = request.getParameter("password");
         
        if(nome==null){
            RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
            rd.forward(request,response);
        }else{
            if(senha != null && nome.equals("andre") && senha.equals("123456")){
                RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
                rd.forward(request,response);
            }else{
                request.setAttribute("error", "yes");
                RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
                rd.forward(request,response);
            }
        }
    }
}

O que eu gostaria de fazer agora é o seguinte:

Se o usuário for satisfatório pegar o nome dele(a) e colocar na página userlogado.jsp com uma saudação.

No caso do Servlet acima.

login: andre
password: 123456

quando redirecionar para próxima tela aparecer para o usuario andre o seguinte:

Olá andre,

____________________________________________________________

Estou tentando fazer utilizando o mesmo esquema do retorno de quando o usuário é invalido e não estou conseguindo.

Valeu....

4 Respostas

luis.soares

Olá.
Coloque a informação que você precisa no request, do mesmo modo como fez com o error = “yes”.

Qual o erro ?

Abraço.

somma

Olá Luis,

do jeito que apresentei para vc não estou obtendo nenhum erro, porém quando tento fazer o que me sugeriu não aparece nada na tela de userlogado.jsp

J

Sim, mas cadê o comando que está salvando na requisição o nome do usuário caso ele seja autenticado com êxito?

Você só está salvando na requisição quando ocorre erro.

request.setAttribute("error", "yes");

Acho que falta fazer o seguinte:

request.setAttribute("login", login);

Daí lá na página JSP você “pega” esse login:

<jsp:useBean id="login" class="java.lang.String" scope="request"/>

E utiliza ele pra apresentar na tela:

<% if (login != null && !login.equals("")) { %>
O usuário <%=login%> conectou com sucesso!
<% } %>
somma

Entendi Juliano.

Eu não estava gravando, estava redirecionando o erro direto.

veja como estou fazendo:

index.jsp

<html>
<head><title>teste</title><head>
<body>
<form method="post">
<%
         if(request.getAttribute("error") != null){
%>
Login ou senha inválidos.
<%}%>

<table>
<tr>
<td> <input type=text name="login"> </td>
<td> <input type=password name="password"> </td>
</tr>

<tr>
<td> Password </td>
<td> <input type=submit value="logar"> </td>
</tr>
</table>
</form>
</body>
</html>

O servlet.... alterado

import java.io.IOException;
import java.util.Iterator.*;
import javax.servlet.ServletRequest;
import javax.servlet.*;
/**
 *
 * @author Andre Somma
 * Data: 31/10/2006
 */
public class LoginUser extends GenericServlet {
    
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        String nome = request.getParameter("login");
        String senha = request.getParameter("password");
         
        if(nome==null){
            RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
            rd.forward(request,response);
        }else{
            if(senha != null && nome.equals("andre") && senha.equals("123456")){
                request.setAttribute("certo", "yes");
                RequestDispatcher rd = request.getRequestDispatcher("www/userlogado.jsp");
                rd.forward(request,response);
            }else{
                request.setAttribute("error", "yes");
                RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
                rd.forward(request,response);
            }
        }
    }
}

e por ultimo o usariologado

userlogado.jsp

<html>
<head><title>Seja bem vindo</title><head>
<body>
Olá,  
<%if(request.getAttribute("certo") != null){ 
                String nome = request.getParameter("login"); 
}%>


</body>
</html>

Vou alterar o código e fazer como Vc disse.

Obrigado.

Criado 31 de outubro de 2006
Ultima resposta 31 de out. de 2006
Respostas 4
Participantes 3