Jsp + servlets + DAO + banco

1 resposta
G

ola pessoal sou novo por aqui e marinheiro de primerira viagem em java. tenham paciencia comigo hehhe

meu projeto é apenas pra comprar passagens de onibus. ele tem que dar baixa no banco e retornar mensagens pro JSP. só isso.

tenho um JSP e um SERVLET (codigo abaixo) e funciona perfeitamente bem, mas agora tenho que fazer um DAO e saparar tudo. não estou sabendo como vou retornar as mensagens ao JSP.

String ver = request.getParameter("Poltrona");
        String botao = request.getParameter("acao");
        
        if (botao.equals("Comprar")) {
            try {
                int quantIngresso = Integer.parseInt(ver);
                if (quantIngresso >= 1 && quantIngresso <= 50) {   //limite do onibus é de 50 passageiros
                    Class.forName("org.hsqldb.jdbcDriver");
                    Connection conexao = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/onibus", "SA", "");
                    Statement stm = conexao.createStatement();
                    ResultSet rs = stm.executeQuery("select * from vendas");
                    while (rs.next()) {
                        String quantLugares = rs.getString("lugares"); //ler quantidade de lugares dispniveis no banco no campo "lugares" 
                        int quantLugaresBanco = Integer.parseInt(quantLugares);

                        if (quantIngresso <= quantLugaresBanco) {
                            stm.executeUpdate("update xxxxxxxxxxxxx");
                            request.setAttribute("mens", "Obrigado pela aquisição, boa viagem");
                            getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
                        } else {
                            request.setAttribute("mens", "Quantidade de lugares insuficiente!");
                            getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
                        }
                    }
                } else {
                    request.setAttribute("mens", "A capacidade deste onibus é de 50 passageiros");
                    getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
                }
            } catch (Exception e) { //exceção
                request.setAttribute("mens", "Digite um  válido");
                getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
            }

tambem estou sem saber fazer essa parte. com o DAO tudo ficou bem mais organizado, mas tou apanhando muito

if (quantIngresso <= quantLugaresBanco) {

Esse é o DAO comprar

public boolean comprar(Onibus cont) {
        try {
            String sql = "update vendas set lugares = lugares - ?";
            PreparedStatement stm = conexao.prepareStatement(sql);
            stm.setString(1, cont.getSolicitacao());
            stm.executeUpdate();

            return true;
        } catch (Exception e) {
            return false;
        }

    }

1 Resposta

tathy.vip

Bom dia George!

Acredito que seria uma coisa parecida com isso:

DAO:

public class PassagemDAO {

	private Connection conexao;

	public PassagemDAO() throws SQLException {
		Class.forName("org.hsqldb.jdbcDriver");   
		this.conexao = Connection conexao = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/onibus", "SA", ""); 
	}

	public int consultaLugares() {
		Statement stm = conexao.createStatement();
		ResultSet rs = stm.executeQuery("select * from vendas");
		while (rs.next()) {
			// ler quantidade de lugares dispniveis no banco no campo "lugares"
			int quantLugaresBanco = Integer.parseInt(rs.getString("lugares"));
			return quantLugaresBanco;
		}
	}
	
	public boolean comprar(Onibus cont) {
		try {
			String sql = "update vendas set lugares = lugares - ?";
			PreparedStatement stm = conexao.prepareStatement(sql);
			stm.setString(1, cont.getSolicitacao());
			stm.executeUpdate();

			return true;
		} catch (Exception e) {
			return false;
		}

	}

}

Servlet:

String ver = request.getParameter("Poltrona");   
	    String botao = request.getParameter("acao");  
	    PassagemDAO dao = new PassagemDAO();
	       
	    if (botao.equals("Comprar")) {   
	        try {   
	            int quantIngresso = Integer.parseInt(ver);  
	                       
	            if (quantIngresso >= 1 && quantIngresso <= 50) {   //limite do onibus é de 50 passageiros   

	                while (rs.next()) {   
   	                    int quantLugaresBanco = dao.consultaLugares();  

	                    if (quantIngresso <= quantLugaresBanco) {   
	                        boolean insert = dao.comprar(cont);
	                    	
	                        request.setAttribute("mens", "Obrigado pela aquisição, boa viagem");   
	                        getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);   
	                    } else {   
	                        request.setAttribute("mens", "Quantidade de lugares insuficiente!");   
	                        getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);   
	                    }   
	                    
	                }   
	            } else {   
	                request.setAttribute("mens", "A capacidade deste onibus é de 50 passageiros");   
	                getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);   
	            }   
	        } catch (Exception e) { //exceção   
	            request.setAttribute("mens", "Digite um nº válido");   
	            getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);   
	        }

Tem vários erros aí porque não entendi algumas coisas no seu código, como por exemplo o parâmetro que deve ser passado para o método “comprar”, mas a lógica seria mais ou menos essa, você deve separa tudo que acessa o banco e coloca no DAO.

Criado 29 de outubro de 2009
Ultima resposta 29 de out. de 2009
Respostas 1
Participantes 2