Tipo usuario login

Boa noite a todos!
Estou tentando redirecionar o usuário a uma página, de acordo com o grupo do usuário que irá fazer o login. Eu tenho o grupo admin, cliente e o técnico.
Na minha página login.jsp , tenho o action form check.jsp que é onde vai verificar o tipo do usuário. O problema é que não está redirecionando para a página certa de acordo com o meu usuário. No check.jsp eu já defini um usuário e senha para o administrador e ela redireciona para a minha página certo. O problema está no cliente e técnico. Eu tentei percorrer pela tabela, se o usuario(nome) for do grupo ‘tecnico’ abre tal página, senão se o usuario for do grupo ‘cliente’ abre outra página.

Tabela Usuario
Campo(nome,senha,confsenha,grupo)
onde o grupo pode ser cliente ou técnico.

<%--
    Document   : Check
    Created on : 06/04/2010, 16:15:29
    Author     : Larissa
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="login.User"%>

<%@ page import="Oiuser.ProcessaUsuario"%>
<jsp:useBean id="meubean1" scope="page" class="Oiuser.ProcessaUsuario"/>
<jsp:setProperty name="meubean1" property="*"/>


<%@ page import="Oiuser.ProcessaSenha"%>
<jsp:useBean id="meubean2" scope="page" class="Oiuser.ProcessaSenha"/>
<jsp:setProperty name="meubean2" property="*"/>


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
<%@ page import="java.sql.*" %>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.Statement"%>


<%
String usuario_p = "admin";
String senha_p = "admin1234";

String NOME = request.getParameter("nomeusuario");
String SENHA = request.getParameter("senhausuario");

User us = new User();
boolean status = us.verificarUsuario(NOME,SENHA);

String nome = "";
String name ="";

 if((meubean1.getnomeusuario().equals(usuario_p)) && (meubean2.getsenhausuario().equals(senha_p))){
     out.println("Bem vindo Administrador");%>
     <%@include file="menu_admin.jsp"%>


<% }else{

           String driver = "org.h2.Driver";
           try {
               Class.forName(driver); 

               //Obtém a conexão com o banco
               Connection conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/~/test","sa","lari");
               Statement stmt = conn.createStatement();
               String sql = "SELECT NOME FROM USUARIO WHERE GRUPO = 'tecnico'";
               ResultSet rs = stmt.executeQuery(sql);

               //Percorrendo o ResultSet e obtendo os valores do banco
              if (rs.next()) {
              nome = rs.getString("NOME");

              if(request.getParameter("nomeusuario").equals(nome)){
              out.println("Bem vindo técnico");%>
                <%@include file="menu_tecnico.jsp"%>
                
 <%}else{
          String sql1 = "SELECT NOME FROM USUARIO WHERE GRUPO = 'cliente'";
          ResultSet rss = stmt.executeQuery(sql1);

              if (rss.next()) {
              name = rss.getString("NOME");
              if(request.getParameter("nomeusuario").equals(name)){
              out.println("Bem vindo usuario");
%>
               <%@include file="Requisicao.jsp"%>

<%}else{
              if(us.result==false)
              out.println("Usuário não existe");
 }
  }
}
 }
           }
             catch (ClassNotFoundException ex) {
             System.out.println("Não foi possível carregar o driver.");
             ex.printStackTrace();
        }
        catch (SQLException ex) {
             System.out.println("Problema com o SQL");
             ex.printStackTrace();
      }
}
%>


    </body>
</html>

Os erros que dá, é que ela mostra as duas página a do cliente e tecnico, ou abre só a página do cliente, tanto pra o cliente e técnico.

Larissa,

Existem algumas coisas que podem melhorar o seu projeto original:

  1. O “if” com várias cláusulas “else” deve ser substituido por um “if” com várias cláusulas “else if”.

  2. Coloque a pesquisa - o SQL - fora do if, e teste a que grupo o usuário pertence.

  3. Que tal criar um DAO com as instruções de acesso ao banco de dados? Um DAO é uma classe Java com as instruções inserir, alterar, excluir e consultar. Esse isolamento permitiria uma manutenção mais simples. Como exemplo, crie uma classe UsuarioDAO com o método validarAcesso, recebendo o nome do usuário e a senha e retornando o grupo ao qual ele pertence ou null se não foi possível autenticar.

Sobre o DAO, dê uma olhada em http://www.guj.com.br/posts/list/66925.java

Esses tópicos são o mínimo para você conseguir fazer o seu projeto funcionar.

Eu espero ter sido útil.

[quote=armeniocardoso]Larissa,

Existem algumas coisas que podem melhorar o seu projeto original:

  1. O “if” com várias cláusulas “else” deve ser substituido por um “if” com várias cláusulas “else if”.

  2. Coloque a pesquisa - o SQL - fora do if, e teste a que grupo o usuário pertence.

  3. Que tal criar um DAO com as instruções de acesso ao banco de dados? Um DAO é uma classe Java com as instruções inserir, alterar, excluir e consultar. Esse isolamento permitiria uma manutenção mais simples. Como exemplo, crie uma classe UsuarioDAO com o método validarAcesso, recebendo o nome do usuário e a senha e retornando o grupo ao qual ele pertence ou null se não foi possível autenticar.

Sobre o DAO, dê uma olhada em http://www.guj.com.br/posts/list/66925.java

Esses tópicos são o mínimo para você conseguir fazer o seu projeto funcionar.

Eu espero ter sido útil.[/quote]

Isso aqui resolve!

Mas vai mais uma dica!
Você pode pegar os dados do FORM “login e senha” pasar para uma Servlet fazer uma única conexão BD
e passar no SQL o “login e senha” vindo da JSP e fazer a consulta!
Existindo o usúario você retorna o TIPO “user, admin etc…”

Espero ter ajudado!

vlw
abs

Vou dar dicas simples e úteis.

  1. idente bem o seu código
  2. mesmo que não seja necessário, utilize {} após os if e outras estruturas. Isto vai facilitar a leitura do código.

Estou dando estas dicas pq pelo que eu vi que seu código só vai fazer qualquer coisa se existir um técnico.
Veja:

		try {  
			Class.forName(driver);
 
			//Obtém a conexão com o banco  
			Connection conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/~/test","sa","lari");  
			Statement stmt = conn.createStatement();  
			String sql = "SELECT NOME FROM USUARIO WHERE GRUPO = 'tecnico'";  
			ResultSet rs = stmt.executeQuery(sql);  

			//Percorrendo o ResultSet e obtendo os valores do banco  
			if (rs.next()) {  

Isto é, vc entra no rs.next se existir um “tecnico”. E se não existir nada é feito. Vc não chega a testar se existe cliente. O teste só é feito se existir um tecnico.