Minha aplicação JSP funciona, mas não sei se o padrão é consistente e aceitável. O que fazer?

14 respostas
Leandro_M

Olá

Comecei agora a programa páginas JSP e estou com uma dúvida procedimental sobre o assunto.

Como teste fiz uma tela de autenticação de usuário (login e senha). Os recursos funcionam normalmente só que não sei se o que fiz é acetável. Iniciei um estudo sobre Struts porque acho que o que fiz funciona, mas não tem padrão algum.

O código está logo abaixo. Poderiam me ajudar por favor?

Olhando o código, o que eu poderia melhorar, refazer ou seguir?

Muito obrigado

Classe DAO
package br.com.sce.persistencia.db.user;

import br.com.sce.bean.UsuarioBean;
import br.com.sce.persistencia.db.conect.Conectar;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *
 * @author Leandro
 */
public class DaoUsario {

    private Connection conn = null;

    public DaoUsario(){

    }

    public DaoUsario(Connection conn){
        this.conn = conn;
    }

        /**
         * @return the conn
         */
        public Connection getConn() {
            return conn;
        }

        /**
         * @param conn the conn to set
         */
        public void setConn(Connection conn) {
            this.conn = conn;
        }

        public UsuarioBean getLoginSenhaUsuario(String login, String senha)throws Exception{

            UsuarioBean us = new UsuarioBean();

        try {
            String sql = "select idpessoa," +
                    "nome," +
                    "sexo," +
                    "nacionalidade," +
                    "email," +
                    "data_nascimento," +
                    "login," +
                    "senha," +
                    "fone_residencial," +
                    "fone_celular," +
                    "fone_recado," +
                    "cidade," +
                    "estado" +
                    " from pessoa where login=? and senha=?";

            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, login);
            ps.setString(2, senha);
            ResultSet rs = ps.executeQuery();
            
            	if(rs.next()){
                    us.setIdpessoa(rs.getInt("idpessoa"));
                    us.setNome(rs.getString("nome"));
                    us.setSexo(rs.getString("sexo"));
                    us.setNacionalidade(rs.getString("nacionalidade"));
                    us.setEmail(rs.getString("email"));
                    us.setData_nascimento(rs.getString("data_nascimento"));
                    us.setLogin(rs.getString("login"));
                    us.setSenha(rs.getString("senha"));
                    us.setFone_residencial(rs.getString("fone_residencial"));
                    us.setFone_celular(rs.getString("fone_celular"));
                    us.setFone_recado(rs.getString("fone_recado"));
                    us.setCidade(rs.getString("cidade"));
                    us.setEstado(rs.getString("estado"));
            }
            ps.close();
            rs.close();
            }catch(Exception e){
                    System.out.println("ERRO DETECTADO 'busca' "+e);
            }
        return us;
    }
}
Classe Bean
package br.com.sce.bean;

/**
 *
 * @author Leandro
 */
public class UsuarioBean {

    private int idpessoa;
    private String nome;
    private String sexo;
    private String nacionalidade;
    private String email;
    private String data_nascimento;
    private String login;
    private String senha;
    private String fone_residencial;
    private String fone_celular;
    private String fone_recado;
    private String cidade;
    private String estado;

    /**
     * @return the idpessoa
     */
    public int getIdpessoa() {
        return idpessoa;
    }

    /**
     * @param idpessoa the idpessoa to set
     */
    public void setIdpessoa(int idpessoa) {
        this.idpessoa = idpessoa;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the sexo
     */
    public String getSexo() {
        return sexo;
    }

    /**
     * @param sexo the sexo to set
     */
    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    /**
     * @return the nacionalidade
     */
    public String getNacionalidade() {
        return nacionalidade;
    }

    /**
     * @param nacionalidade the nacionalidade to set
     */
    public void setNacionalidade(String nacionalidade) {
        this.nacionalidade = nacionalidade;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * @return the data_nascimento
     */
    public String getData_nascimento() {
        return data_nascimento;
    }

    /**
     * @param data_nascimento the data_nascimento to set
     */
    public void setData_nascimento(String data_nascimento) {
        this.data_nascimento = data_nascimento;
    }

    /**
     * @return the login
     */
    public String getLogin() {
        return login;
    }

    /**
     * @param login the login to set
     */
    public void setLogin(String login) {
        this.login = login;
    }

    /**
     * @return the senha
     */
    public String getSenha() {
        return senha;
    }

    /**
     * @param senha the senha to set
     */
    public void setSenha(String senha) {
        this.senha = senha;
    }

    /**
     * @return the fone_residencial
     */
    public String getFone_residencial() {
        return fone_residencial;
    }

    /**
     * @param fone_residencial the fone_residencial to set
     */
    public void setFone_residencial(String fone_residencial) {
        this.fone_residencial = fone_residencial;
    }

    /**
     * @return the fone_celular
     */
    public String getFone_celular() {
        return fone_celular;
    }

    /**
     * @param fone_celular the fone_celular to set
     */
    public void setFone_celular(String fone_celular) {
        this.fone_celular = fone_celular;
    }

    /**
     * @return the fone_recado
     */
    public String getFone_recado() {
        return fone_recado;
    }

    /**
     * @param fone_recado the fone_recado to set
     */
    public void setFone_recado(String fone_recado) {
        this.fone_recado = fone_recado;
    }

    /**
     * @return the cidade
     */
    public String getCidade() {
        return cidade;
    }

    /**
     * @param cidade the cidade to set
     */
    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    /**
     * @return the estado
     */
    public String getEstado() {
        return estado;
    }

    /**
     * @param estado the estado to set
     */
    public void setEstado(String estado) {
        this.estado = estado;
    }
}
Classe que valida o usuário
package br.com.sce.negocio.autenticar;

import br.com.sce.bean.UsuarioBean;
import br.com.sce.persistencia.db.conect.Conectar;
import br.com.sce.persistencia.db.user.DaoUsario;
import java.sql.Connection;

/**
 *
 * @author Leandro
 */
public class AutenticarUsuario {

    private String login;
    private String senha;
    private boolean autorizado = false;
    private Connection conn = null;

    /**
     * @return the login
     */
    public String getLogin() {
        return login;
    }

    /**
     * @param login the login to set
     */
    public void setLogin(String login) {
        this.login = login;
    }

    /**
     * @return the senha
     */
    public String getSenha() {
        return senha;
    }

    /**
     * @param senha the senha to set
     */
    public void setSenha(String senha) {
        this.senha = senha;
    }

    /**
     * @return the autorizado
     */
    public boolean isAutorizado() {
        return autorizado;
    }

    /*
     * Autentica o usuário no sistema
     */
    public void setAutenticar(){
        
        try {
            /*
             * Seta a conexão com o banco de dados
             */
            setConn(new Conectar().getConector());

            UsuarioBean us = new UsuarioBean();
            us = new DaoUsario(getConn()).getLoginSenhaUsuario(getLogin(), getSenha());

            if((getLogin().equals(us.getLogin())) && (getSenha().equals(us.getSenha()))){
                /*
                 * Retorna no método isAutenticado()
                 */
                autorizado = true;
            }
        } catch (Exception ex) {
            System.out.println(" --> "+ ex);
        }
        
    }

    /*
     * Verifica se a conexão ainda está ativa
     */
    public boolean isConectado(){
        if(conn != null){
            return true;
        }else{
            return false;
        }
    }

    /**
     * @return the conn
     */
    public Connection getConn() {
        return conn;
    }

    /**
     * @param conn the conn to set
     */
    public void setConn(Connection conn) {
        this.conn = conn;
    }
WEB - Tela inicial de login (input de informações)
<html>
<head><title>Bem-vindo</title></head>
<body>

<form name="login" method="post" action="fazerLogin.jsp">
  Usuário: <input type="text" name="usuario"><br>
  Senha: <input type="password" name="senha"><br>
  <input type="submit" value="Enviar!">
</form>

</body>
</html>
WEB - Processamento das informações e resposta
<%@page import="br.com.sce.negocio.autenticar.AutenticarUsuario"
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>
<head><title>Bem-vindo</title></head>
<body>

<%

  AutenticarUsuario auth = new AutenticarUsuario();

  // dados informados no formulário
  auth.setLogin(request.getParameter("usuario"));
  auth.setSenha(request.getParameter("senha"));
  auth.setAutenticar();
  // verifica se os dados informados estão corretos
  if(auth.isAutorizado()){
    // login efetuado com sucesso.
    out.println("Login efetuado com sucesso!");
  }else{
    // dados não conferem. Direcione o usuário para a página de
    // login novamente
      response.sendRedirect("ErrologinSenha.jsp");
  }
%>

</body>
</html>
WEB - Página que retorna uma mensagem de erro
<%@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>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Escola XXX - Erro</title>
    </head>
    <body>
        <h1><font color ="red"> Seu login ou senha está(ão) errado(s)</font></h1>
    </body>
</html>

14 Respostas

rdgms

Cara eu geralmente deixo a jsp , xhtml ,jsf, bla ,bla ,bla…
so para view toda logica eu coloco em uma class se eu não me engano no struts é Action neh? no Vraptor Component , no jsf managedbean… ou puro mesmo na servlet!
ahh você não esta usando nada de struts aih…
para começar sugiro jsp/servlet
^^

Marciano_Java

Cara estude o padrão MVC, para fazer a separação de sua aplicação em camadas, pois não é uma boa pratica colocar código Java em páginas web estude também JSTL.
Abraço.
Marciano.

Leandro_M

rdgms, verdade eu não usei recursos do Struts. Somente “gambiarra”.

Marciano_Java, aproveitando sua sugestão gostaria de fazer uma pergunta a todos: Qual seria o mair fácil - Struts, Spring, JSTL, JSF (é o mesmo que JSTL?)

Obrigado mais uma vez

andreiribas

Aprenda o básico antes, e depois de entender bem vá para os assuntos mais complicados.

Básico:
Java e OO.
Servlets
JSP
SQL

Leandro_M

andreiribas, Com exceção do Servelets e bem pouco JSP eu conheço tudo que você sugeriu. Claro que não sou senior e nenhum destes, mas consigo me virar. Pelo que tô vendo falta mesmo um estudo solido sobre Servelets e JSP.

Quando comecei a fazer uns testes com JSP achei tranquilo logo no início, o que achei complicado foi entender os padrões de desenvolvimento. Estou apenas no segundo dia de estudo da Struts, talves seja por isso que estou um tanto desorientado.

Hoje, além de estar tentando aprender Struts, tenho aquela dúvida sobre qual framework utilizar.

Obrigado

rdgms

Então cara aprenda o basico é JSP/Servlet mesmo a manera correta de programar e fazer o jsp apenas como view sem scriplets!! E
servlet para as regras de negocios.
Quanto a framework acho que a escolha vai da necessidade e gosto.
O Vraptor é muito rapido para desenvolver por outro lado temos o Jsf que é muito completo e aih vai…

Leandro_M

rdgms, de ontem para hoje li muitos artigos sobre assunto e tive algumas dúvidas. Uma delas é a seguinte: O padrão MVC não é aconselhável para pequenas aplicações. Minha aplicação será apresentada como TCC, mas ela não será tão grande. 17 tabelas de banco de dados, 14 classes (classes de entidade - modelagem UML) e mais ou menos 30 telas.

Vi algumas coisas também, as quais eu poderia usar como saída para meu problema sobre programar as regras de negócio somente no servlets. Assim eu tiro a “sujeira” do página JSP.

Resumindo:
É viável usar o padrão MVC em meu caso?
Se não, a solução de usar os servlets como regra de negócio, fazendo uma comunicação entre página JSP e classes Bean e DAO é uma boa saída?

O que voces acham?

Obrigado mais uma vez.

rdgms

Cara isso esta totalmente errado!!! MVC é uma arquitetura que visa separar o sistema em camadas e é aconselhavel ultiliza-lo em todas as aplicações web que for desenvolver!!!.

Sim, cara MVC não é dificil nem tão trabalhoso assim!!!

Tente mas ou menos fazer assim oh:

1- “Servlet Cadastro” (chama pagina jsp) > “JSP Cadastro”
2- “JSP Cadastro” (Envia dados para o Servlet) > “Servlet Cadastro”
3- “Servlet Cadastro” (Instacia um objeto Dao e Cadastra) “Class Dao”
4- “Servlet Cadastro” (Envia Resultado para JSP) “JSP Proximo” ou caso ocorra erro “JSP Cadastro”

Leandro_M

Como todo começo eu estou sentindo dificuldades para entender como o Struts funciona, mas a cada leitura que faço sinto-me mais por dentro do assunto.

Tentarei fazer alguma coisa de acordo com sua sugestão e postarei aqui, ok?

Obrigado

rdgms

Bele!!!
eu não gosto muito do struts…
gosto mais do Jsf , Vraptor, Spring, Mentawai…
na ordem…kkk

Leandro_M

rdgms, falando para um iniciante, porque você gosta mais do JSF?

Antes de tentar entender o Struts eu fiz vários exemplos com o JSF (usando livro). Mas meu professor me disse que seria muito difícil e que teria muito trabalho. Li muita coisa sobre JSF, peguei muitos exemplos e percebi que o pessoal fala muito bem, porém estou com dúvida de iniciante: Qual seguir. Sei que cada casa é um caso e devemos analisar sempre a necessidade.

Aí vai a pergunta: Porque JSF e não Struts? JSF funciona com TOMCAT? Não consegui rodar um exemplo utilizando o TOMCAT.

rdgms

Eae cara acho o Struts 1 muito complexo com muito xml…kkk mas o Webwork ou Struts 2 é bom sim.

Eu gosto do jsf pela arquitetura dele , algumas coisas que ele permite fazer como binding , managedbean , navegação no facesconfig, possui muitos projetos para view como Richfaces e outras coisinhas…

para uma framework bem simples e funcional para começar é o VRaptor aconselho!!!

ahh JSF roda no TomCat sim.

Leandro_M

rdgms, muito obrigado pelas dúvidas que você está tirando.

Não conhecia o VRaptor e já fiz umas pesquisas e gostei a príncipio de sua aprensentação. Mesmo conhecendo pouco do assunto vi que ele é mais simples e fácil de utilizar.

Farei pesquisas sobre este framework para tentar entendê-lo.

Outra dúvida de iniciante: Ele roda com TOMCAT não é?

Grato

vinicius_roc

Sim, roda como qualquer outro framework Java

Criado 22 de julho de 2009
Ultima resposta 23 de jul. de 2009
Respostas 14
Participantes 5