Ajuda com servlets e beans

Olá pessoal tenho que fazer um sistema de cadastros usando JSF e richfaces no padrão MVC.

Sou um pouco inexperiente na parte Web, mas estou aprendendo pouco a pouco.

Minha dúvida é:

Sabendo que minhas páginas terão que ser com richfaces, é melhor fazer o login assim mesmo (codigo abaixo) ou com servlet? Se com servlet, como receber os parametros (usuario e senha) usando essa pagina q eu fiz?

Usei partes da apostila da Caelum, partes do Core Java Server Faces e por enquanto tenho isso:

pacote padrao:

-hiernate.cfg.xml
-log4j.xml

pacote vo (sets e gets + arquivos de mapeamento do hibenate):

-UsuarioVO (contem id, usuario, senha)
-CadastrosVO (nome, endereco, etc)
-UsuarioVO.hbm.xml
-CadastrosVO.hbm.xml

pacote dao:

-DAOFactory
-GenericDAO
-HibernateUtil
-UsuarioDAO
(aqui tem um método: public UsuarioVO existeUnico(String usuario, String senha) que verifica usuario e senha)

na parte do view farei as páginas com richfaces, mas por enquanto estou testando com jsp mesmo (não estudei richfaces ainda).

aí eu fiz o login assim:

package controller;

import dao.DAOFactory;
import dao.UsuarioDAO;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import vo.UsuarioVO;

public class Login {
    private UsuarioVO usuarioVO;
    private String usuario;
    private String senha;

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }
    
    public String efetuaLogin() {
        DAOFactory dao = new DAOFactory();
        UsuarioDAO usuarioDAO = dao.getUsuarioDAO();
        usuarioVO = usuarioDAO.existeUnico(usuario, senha);
        
        FacesContext fc = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
        
        if (usuarioVO != null) {
            session.setAttribute("logado", usuario);
            return "logado";
        } else {
            return "naoLogado";
        }   
    }
    
}

login.jsp

<%-- 
    Document   : login
    Created on : 03/05/2008, 15:21:32
    Author     : joaosavio
--%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<%@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">

<html>
    <f:view>
       
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Login</title>
        </head>
        <body>
            <h:form>
                <p>
                    <h:outputText value = "ACESSO AO SISTEMA"/>
                </p>
                <p>
                    <h:outputText value = "Usuário: "/>
                    <h:inputText value="#{login.usuario}"/>
                </p>
                <p>    
                    <h:outputText value = "  Senha: "/>
                    <h:inputSecret value="#{login.senha}"/>
                </p>
                <p>
                    <h:commandButton value="ok" action="#{login.efetuaLogin}"/>
                </p>
            </h:form>
        </body>
    </f:view>
</html>

up

ninguém?

Se você está usando JSF, para esse caso você não precisa de Servlets, use o próprio ManagedBean.

Agora uma dica:
Olhando rápido na sua arquitetura eu não gostei da idéia de usar um VO e um DAO diferentes. Fica muito mais fácil e claro utilizar apenas um objeto, por exemplo Usuario.

Assim seu ManagedBean poderia ser algo assim

public class Login {
  private Usuario usuario = new Usuario();
  //set e get do objeto

  public String doLogin() {
    if (usuario.isValid()) {
      return "success"
    } else {
      return "error"
    }
  }
}

e no seu JSP, você direciona o valor do campo para dentro do atributo do usuário diretamente

&lt;h:inputText value="#{login.usuario.username}"...

Menos código certo? Além de tudo, fica com mais sentido o seu objeto Usuario validar se ele é valido ou nao.

Dê um olhada sobre DDD que certamente o exemplo ficará mais claro

>

fala cara blza?

valeu pelas dicas

mas o q é DDD?

e vc pode citar um uso de servlets com JSF entao?

abraços

up

pra que serviria o pacote controller entao?

Abraços e valeu