Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cristina CNC

Conexão + JSP + HTML

Recommended Posts

Olá amigos,

 

Peço desculpa se o topico já existir, mas procurei e nao encontrei nada q me ajudasse.

 

Tenho uma classe conexão e uma pagina JSP q tem um include de uma pagina HTML.

 

Dentro do codigo HTML eu tenho um combobox q é populado por um bd (MySql), se eu definir a conexão dentro do codigo HTML, funciona direitinho, mas qualquer um poderá pegar os dados do bd mandando exibir o código-fonte.

 

Jeito errado:

 

<table>
   <tr>
      <td>
        <select name="cod_nat_jur" class="campos" style="width: 381px;" onkeypress="cbboxSearch(this, event); return false;">
        <option value="0">Selecione o Código de Natureza Jurídica</option>

<%
   JComboBox nat_;
   nat_ = new JComboBox();
   try{
         Class.forName("com.mysql.jdbc.Driver").newInstance();
         Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/folow-up","root","root");
         PreparedStatement sql = conn.prepareStatement("SELECT * FROM nat_juridica group by codigo");
         ResultSet res = sql.executeQuery();
         while(res.next()){
             String x = res.getString("codigo");
             String y = res.getString("descricao");
%>                          
      <option value="<%=x%>"><%=x%> - <%=y%></option>

<%    }
     }catch (SQLException e){
          e.printStackTrace();
          out.println("Não foi possível conectar com o banco!");
      }
%>
     </select>
  </td>
</tr>                        
</table>

Gostaria de ocultar a minha conexão, e não estou conseguindo.

 

Segue minha aplicação:

 

Classe IFD_Conexao:

 

package cadastro;

import java.sql.*;

public class IFD_Conexao {
	protected Connection conn;
        protected String mensagem;

  public void conecta() {
	 // carraga driver jdbc
    try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
    }
    catch (Exception ex) {
      mensagem = "Driver não carregado!";
      System.out.println("erro:"+mensagem);
    }

	 // faz a conexão
    try {
    conn = DriverManager.getConnection("jdbc:mysql://localhost/folow-up","root","root");
        
    }
    catch (SQLException ex) {
      mensagem = ex.getMessage();
      System.out.println("erro:"+mensagem);
    }
  }

}

 

cad_empresa.jsp

 

<%@taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

 <%@ page import="javax.swing.JComboBox"%>
 <%@ page import="java.sql.*" %>
 <%@ page import="java.io.*" %>
 <%@ page import="java.util.*" %>
 <%@ page import="java.util.ArrayList"%>
 <%@ page import="cadastro.NaturezaJuridica" %>
 <%@ page import="cadastro.IFD_Conexao" %>
  
 <jsp:useBean id="natureza" scope="page" class="cadastro.NaturezaJuridica" /> 
 

<html>

<body>

<div align="justify"> <%@include file="ifd_cabecalho.jsp"%> </div>
      
<div align="justify"> <%@include file="cad_empresa_front.html"%> </div>

<div align="justify"><%@include file="ifd_rodape.jsp"%></div>
</body>
</html>

Como penso que deve ser, mas dá erro.

cad_empresa_front.html:

 

<table>
                            <tr>
                            	<td>
				                   <select name="cod_at_econ" class="campos" style="width: 381px;" onkeypress="cbboxSearch(this, event); return false;">
				                   <option value="0">Selecione a Atividade Econômica</option>
				                   <%
				                    JComboBox at_;
				                    at_ = new JComboBox();
				            		try{
				            			IFD_Conexao bd = new IFD_Conexao();
				            			bd.conecta();
				            							            		          		
				            			PreparedStatement sql = conn.prepareStatement("SELECT * FROM cnae group by codigo");
				            			ResultSet res = sql.executeQuery();
				            			while(res.next()){
				            				String x = res.getString("codigo");
				            				String y = res.getString("descricao");
				            				
				            			%>          				
				            			
				                        <option value="<%=x%>"><%=x%> - <%=y%></option>
				                        
				            		<%	}
				            		}
				            		catch (SQLException e){
				            			e.printStackTrace();
				            			out.println("Não foi possível conectar com o banco!");
				            		}
				            		                    
				                    %>
				                    </select>
				                                     
				                  </td>
                            </tr>
                 			
                 			</table>

Abraço a todos,

 

Cristina

 

Ninguem respondeu... será que nao esta claro o que eu preciso?

Se não der para entender me avisem, eu melhoro o texto.

 

[]s

 

Cris

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cris, o codigo java não aparece no lado cliente da aplicação, o servidor processa o codigo java e devolve uma pagina contendo somente o html como resposta à requisição do cliente.

E uma dica que eu te dou é que você crie uma classe java contendo a conexão com o banco, assim você não precisa criar uma nova conexão toda vez que precisar realizar uma consulta, bastando apenas importar essa classe com os métodos de conexão.

Espero que tenha te ajudado.Valeu!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cris, o codigo java não aparece no lado cliente da aplicação, o servidor processa o codigo java e devolve uma pagina contendo somente o html como resposta à requisição do cliente.

E uma dica que eu te dou é que você crie uma classe java contendo a conexão com o banco, assim você não precisa criar uma nova conexão toda vez que precisar realizar uma consulta, bastando apenas importar essa classe com os métodos de conexão.

Espero que tenha te ajudado.Valeu!!!!

 

 

Olá Anderson,

 

Eu tenho a classe Conexão separada, e consigo chamar no meu jsp.

O problema é que nao consigo popular o combobox do html sem mostrar minha conexao para o usuario.

Tem alguma outra forma q eu possa popular o combobox com os dados do bd ou um jeito melhor de esconder a conexao?

 

Agradeço a atenção,

 

Cristina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cristina, fiz um exemplo basico aqui para voce já começar a pensar em MVC.

 

Tenho um VO

 

public class Contato {

private long id;
private String nome;
private String telefone;


public Contato(){
}

public Contato(long id, String nome, String telefone){
	this.nome = nome;
	this.id = id;
	this.telefone = telefone;
}


public long getId() {
	return id;
}
public void setId(long id) {
	this.id = id;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getTelefone() {
	return telefone;
}
public void setTelefone(String telefone) {
	this.telefone = telefone;
}

public String toString(){
	String a;
   	a = "Contato " + getId() + "\n" + getNome() +
56b
"\n" + getTelefone() + "\n" + "------------------------";
   	return a;
}
}

 

 

Ai criei um DAO para manipular a questão de banco para esse VO

 

public class ContatoDAO {

DataSource ds;
static final String sqlListaContatos = "SELECT *FROM tb_contato";

public ContatoDAO (DataSource ds){
	this.ds = ds;
}

public List<Contato> getContatos() throws DAOException{
	List<Contato> contatos = new ArrayList<Contato>();
	PreparedStatement pstmt = null;
	ResultSet rs = null;
	Connection c = null;

	try {
		c = ds.getConnection();
        pstmt = c.prepareStatement(sqlListaContatos);
        rs = pstmt.executeQuery();
        while(rs.next()){
        	Contato contato = new Contato();
        	contato.setId(rs.getLong("id"));
        	contato.setNome(rs.getString("nome"));
        	contato.setTelefone(rs.getString("telefone"));
        	contatos.add(contato);
        }
	} catch (SQLException e) {
		throw new DAOException(e);
	}
       finally{
               // criei essa classe/metodo para fechar todas as conexoes
       	SQLUtils.closeResourcesQuietly(rs, pstmt, c);
       }	

	return contatos;
}
}

 

 

Para pegar a conexao eu criei um DAOFactory e usei uma blibioteca que implementa pool de conexao.

Se quiser faz

56b

er de outra forma a idéia é a mesma.

 

public class DAOFactory {

private static DAOFactory instance;
private DataSource ds;

private ContatoDAO contatoDAO;

private DAOFactory(DataSource ds) {
	this.ds = ds;
}

/**
 * Retorna a instancia da factory
 * 
 * @return
 * @throws DAOFactoryException
 */
public static DAOFactory getInstance() throws DAOFactoryException {
	if (instance == null) {
			try {
				ComboPooledDataSource cpds = (ComboPooledDataSource) ds;
				cpds = new ComboPooledDataSource();
				cpds.setDriverClass("net.sourceforge.jtds.jdbc.Driver");
				cpds.setJdbcUrl("jdbc:jtds:sqlserver://localhost:1433/kandrade");
				cpds.setUser("usuario");
				cpds.setPassword("senha");
				cpds.setMaxPoolSize(3);
				cpds.setMinPoolSize(20);
				ds = cpds;
			} catch (PropertyVetoException e1) {
				throw new DAOFactoryException(e1);
			}
		}
		instance = new DAOFactory(ds);
	}
	return instance;
}

public ContatoDAO getContatoDAO() {
	if (contatoDAO == null) {
		contatoDAO = new ContatoDAO(ds);
	}
	return contatoDAO;
}
}

 

Esse cara instancia e retorna seu DAO mais o DataSource.

 

 

 

Bom agora vem a apresentação.

Eu criei um servlet para receber o request e direcionar para o jsp.

O servlet passa os dados necessários para página por atributo de escopo request.

 

pub
56b
lic class ListaContatos extends HttpServlet {
private static final long serialVersionUID = 1L;

   /**
    * @see HttpServlet#HttpServlet()
    */
   public ListaContatos() {
       super();
       // TODO Auto-generated constructor stub
   }

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{
	List<Contato> contatos = null;
	try {
		ContatoDAO c = DAOFactory.getInstance().getContatoDAO();
		contatos = c.getContatos();
	} catch (Exception e1) {
		throw new ServletException("Deu pau!",e1);
	}
	for(Contato contato : contatos){
		System.out.println(contato);
	}
               // passa a lista para a jsp
	request.setAttribute("contatos", contatos);
	RequestDispatcher rq = request.getRequestDispatcher("/exibeLista.jsp");
	try {
		rq.forward(request, response);
	} catch (ServletException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

}
}

 

 

Para exibir eu usei a JSTL para deixar o código mais limpo e organizado.

Precisa só combina-la a sua tag select.

 

<%@ page language="java" contentType="text/html; c
32e
harset=ISO-8859-1"
   pageEncoding="ISO-8859-1"%>
   <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!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=ISO-8859-1">
<title>Exibe Lista</title>
</head>
<body>
<h1>Lista</h1>
<c:forEach var="contato" items="${requestScope.contatos}">  
      <c:out value="${contato.nome}"/>  
</c:forEach> 
</body>
</html>

 

Qualquer dúvida questione.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.