Visualizar dados em JSP

12 respostas
pfusco

Bom Dia a tds,

Desculpem minha ignorancia sou iniciante em JAVA/J2EE, e minha classe abaixo está funcionando perfeitamente, uso o NetBeans e no Output estou conseguindo visualizar os dados perfeitamente… Só que gostaria que a saida dos dados fosse lista-los numa pagina JSP, alguem tem ideia como faço tal coisa!!!

Comprei alguns livros como do Fernando Anselmo do DFJUG e do Deitel, mas estou perdido. A classe está a baixo… Desde já agradeço a ajuda de vc´s.

import java.sql.*;

public class Busca {

public Connection connectMySQL = null;

public Statement stmtMySQL = null;

public ResultSet resultado = null;

public void listarUsuarios(){

String sql = "SELECT usuario, nome, senha FROM usuario order by nome";
    
    try {
        String driverMySQL = "org.gjt.mm.mysql.Driver";
        Class.forName(driverMySQL);
        String urlMySQL = "jdbc:mysql://ipservidor:porta/banco";
        String userMySQL = "usuario";
        String paswMySQL = "senha";
        connectMySQL = DriverManager.getConnection(urlMySQL, userMySQL, paswMySQL);
        stmtMySQL = this.connectMySQL.createStatement();
        resultado  = stmtMySQL.executeQuery(sql);
    
        while(resultado.next()){
            
            System.out.println(resultado.getString(1) + " - " + resultado.getString(2) +  " - " + resultado.getString(3));
        
        }
    
    } catch (ClassNotFoundException e) {
            System.out.println("erro listando usuarios: " + e.getMessage());
            
    } catch(SQLException e){
        System.out.println("erro listando usuarios: " + e.getMessage());
    
    } finally {
        try {

            if(stmtMySQL != null) stmtMySQL.close();
            if(resultado != null) resultado.close();
        } catch (SQLException e){
            System.out.println("erro ao tentar fechar o stmt e o rs: " + e.getMessage());
        }
    }

}

}

12 Respostas

joede.fadel

poste o teu jsp q vc fez

pfusco

<%@page import=“java.sql.*, Relatorio.Busca” %>

<%

Busca busca = new Busca();

%>
teste <% busca.listarUsuarios(); %>

Bem na verdade eu coloquei o jsp somente a chamada para essa classe java…na verdade eu queria que no lugar do System.out.println(resultado.getString(1) + " - " + resultado.getString(2) + " - " + resultado.getString(3)); eu pudesse carregar estes dados que estou vendo no output do netbeans em uma pagina nova!!! Em uma tabela por exemplo…

rdgms

Aew … entao eu acho que você deveria cria uma servelts… pq o System.out.println() nao eh para web eh para desktop…

public class CadastrarItem extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
   

	public CadastrarItem() {
		super();
	}   	

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	}  	
	

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//Aqui vc instancia sua classe conexao... e tudo mais...
             
               //ai ou vc escreque aqui
               response.getWriter().write("aqui vc escreve ");
                  
          
		
	}   	  	    
}

ou vc faz um beans normal … chama da sua pagina jsp e com o out.println() vc imprime na pagina…

joede.fadel

ou colocar o out.println para mostrar os dados em um jsp

<%
         ResultSet resultado = busca.listarUsuarios();
         
       while(resultado.next()){
         out.println(resultado.getString(1) + " - " + resultado.getString(2) + " - " + resultado.getString(3));
      }
       %>

só q o retorno do metodo de busta tem q ser um ResultSet

pfusco

joede.fadel:
ou colocar o out.println para mostrar os dados em um jsp

<%
         ResultSet resultado = busca.listarUsuarios();
         
       while(resultado.next()){
         out.println(resultado.getString(1) + " - " + resultado.getString(2) + " - " + resultado.getString(3));
      }
       %>

só q o retorno do metodo de busta tem q ser um ResultSet

Eu tentei fazer isso mas deu erro… queria ver se tinha como fazer algo parecido ao que escrevi abaixo…

out.println("<html>");
        out.println("<head>Relátorio</head>");
        out.println("<body>");

        while(resultado.next()){
               out.println(resultado.getString(1) + " - " + resultado.getString(2) +  " - " + resultado.getString(3));
        }
        
        out.println("</body>");
        out.println("</html>");

e abrir uma outra janela mostrando esse “relatorio”. tipo to começando a ver aqui funciona o Servlet(me corrija se estiver falando bobagem).

Obrigado pela ajuda!!!

pimenta

Não é tão simples assim.
Cria aqui, cria ali e roda.
Tem a configuração do web.xml também.

pfusco

pimenta:
Não é tão simples assim.
Cria aqui, cria ali e roda.
Tem a configuração do web.xml também.

Bem continuando minha saga de estudos… cheguei ao codigo abaixo…

package Relatorio;

import java.sql.<em>;

import javax.servlet.</em>;

import javax.servlet.http.<em>;

import <a href="http://java.io">java.io</a>.</em>;

public class Busca extends HttpServlet {

public Connection connectMySQL = null;

public Statement stmtMySQL = null;

public ResultSet resultado = null;

public void listarUsuarios(HttpServletResponse response ,
boolean ErrorMessage) throws ServletException, IOException {

String sql = "SELECT usuario, nome, senha FROM usuario order by nome";

    response.setContentType("text/html;charset=UTF-8");   
    PrintWriter out = response.getWriter();
    
    try {
// Abaixo parte de conexão.

String driverMySQL = org.gjt.mm.mysql.Driver;

Class.forName(driverMySQL);

String urlMySQL = jdbc:mysql://ipservidor:porta/bd”;

String userMySQL = user;

String paswMySQL = senha;

connectMySQL = DriverManager.getConnection(urlMySQL, userMySQL, paswMySQL);

stmtMySQL = this.connectMySQL.createStatement();

resultado  = stmtMySQL.executeQuery(sql);
//abaixo Leitura montagem do HTML e leitura dos dados

out.println("");

out.println(Relátorio);

out.println("");

out.println("
");

//Leitura dos dados.
while(resultado.next()){

out.println("<tr>");
            out.println("<td>"+resultado.getString(1)+"</td>");
            out.println("<td>"+resultado.getString(2)+"</td>");
            out.println("<td>"+resultado.getString(3)+"</td>");
            out.println("</tr>");
        }
        
        out.println("</table>");
        out.println("</body>");
        out.println("</html>");
//tratando as excessões.

} catch (ClassNotFoundException e) {

System.out.println("erro listando usuarios: " + e.getMessage());
} catch(SQLException e){
        System.out.println("erro listando usuarios: " + e.getMessage());
    
    } finally {
        try {
            if(stmtMySQL != null) stmtMySQL.close();
            if(resultado != null) resultado.close();
        } catch (SQLException e){
            System.out.println("ERRO AO FECHAR CONEXÃO: " + e.getMessage());
        }
    }

}

}

ele compila redondinho… não deu erro algum, mas na hora que executa a pagina que possui o seguinte codigo:

<%@page import=“java.sql.*, Relatorio.Busca” %>

<%

Busca busca = new Busca();

%>
WEBVENDAS - Manchester Tubos e Perfilados S/A <% busca.listarUsuarios(); %>

ele está dando ERRO HTTP STATUS 500

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Relatorio.Busca.listarUsuarios()V

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)

org.apache.jsp.index_jsp._jspService(index_jsp.java:67)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

root cause

java.lang.NoSuchMethodError: Relatorio.Busca.listarUsuarios()V

org.apache.jsp.index_jsp._jspService(index_jsp.java:57)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
pfusco

meu arquivo web.xml está assim

<?xml version="1.0" encoding="UTF-8"?> Busca Relatorio.Busca Busca /Busca 5 index.jsp
pimenta

Cara, como você vai usar um JSP pra exibição você não precisa usar o out.println(), você precisa de um RequestDispatcher.
Pesquise sobre…

Parece estar tudo ok com o seu web.xml

Abraços,

pfusco

Mais uma ignorancia do aprendiz aqui… já que teoricamente meio codigo esta correto… e o arquivo web.xml tbém como eu deveria fazer pra rodar/chamar o servlet no browser???1

Estou fazendo coisa errado, pois da HTTP STATUS 404

pimenta

Levando em consideração que você já tenha instalado o Tomcat na sua máquina já vou colocar a estrutura de páginas que deve ser seguida a partir de Tomcat/webapps:

Aplicacao

  • Todas as views (jsp, html…)

Aplicacao/WEB-INF

  • Aqui fica o web.xml

Aplicacao/WEB-INF/classes

  • Os .class da sua aplicação (Caso você esteja usando pacotes a estrutura de pacotes deve ser repetida aqui. Ex.: Se você tem o pacote com.br.aplic seus .class ficarão em Aplicacao/WEB-INF/classes/com/br/aplic)

Aplicacao/WEB-INF/lib

  • Qualquer library “extra” que sua aplicação necessite

Estando isso correto e com o Tomcat rodando você vai digitar:

http://localhost:8080/Aplicacao/Busca

OBS1: Caso o seu Tomcat esteja rodando em outra porta troque o 8080 pela porta que ele está.
OBS2: /Busca porque é o que está na tag do seu web.xml

Abraços,

pfusco

Poxa to voltando aqui pra AGRADECER a todos pela ajuda e postar meu codigo!!! consegui fazer o servlet funcionar com com acesso ao Mysql… Se alguem ainda tiver algum meio de melhorar o codigo estou aberto a ideias!!!

Projeto feito no NetBeans:

Crie m projeto chamado Teste.

Coloque o conector mysql na pasta WEB-INF\classes

Arquivo web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<servlet>
    <servlet-name>Teste.SenhasMysql</servlet-name>
    <servlet-class>Teste.SenhasMysql</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Teste.SenhasMysql</servlet-name>
    <url-pattern>/Teste/SenhasMysql</url-pattern>
</servlet-mapping>

  <session-config>
<session-timeout>
        5
</session-timeout>
index.jsp

Crie um pacote chamado teste em seguida uma classe JAVA SenhasMysql.java:

package Teste;

import java.sql.<em>;

import <a href="http://java.io">java.io</a>.</em>;

import javax.servlet.<em>;

import javax.servlet.http.</em>;

public class SenhasMysql extends HttpServlet {

public Connection connectMySQL = null;

public Statement stmtMySQL = null;

public ResultSet resultado = null;

private PrintWriter out;

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException{

String sql = "SELECT usuario, nome, senha FROM usuario order by nome";

    res.setContentType("text/html;charset=UTF-8");   
    PrintWriter out = res.getWriter();
    
    try {
// Abaixo parte de conexão.

String driverMySQL = org.gjt.mm.mysql.Driver;

Class.forName(driverMySQL);

String urlMySQL = jdbc:mysql://ipservidor:porta/BD”;

String userMySQL = usuario;

String paswMySQL = senha;

connectMySQL = DriverManager.getConnection(urlMySQL, userMySQL, paswMySQL);

stmtMySQL = this.connectMySQL.createStatement();

resultado  = stmtMySQL.executeQuery(sql);
//abaixo Leitura montagem do HTML e leitura dos dados

out.println("");

out.println(Relátorio);

out.println("");

out.println("
");
out.println("
");

//Leitura dos dados.
while(resultado.next()){

out.println("<tr>");
            out.println("<td>"+resultado.getString(1)+"</td>");
            out.println("<td>"+resultado.getString(2)+"</td>");
            out.println("<td>"+resultado.getString(3)+"</td>");
            out.println("</tr>");
        }
        
        out.println("</table>");
        out.println("</body>");
        out.println("</html>");
        out.close();
//tratando as excessões.

} catch (ClassNotFoundException e) {

System.out.println("erro listando usuarios: " + e.getMessage());
} catch(SQLException e){
        System.out.println("erro listando usuarios: " + e.getMessage());
    
    } finally {
        try {
            if(stmtMySQL != null) stmtMySQL.close();
            if(resultado != null) resultado.close();
        } catch (SQLException e){
            System.out.println("ERRO AO FECHAR CONEXÃO: " + e.getMessage());
        }
    }

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws IOException, ServletException{

doGet(request, response);

}

}

Chame no browser com a seguinte endereço:

http://localhost:8084/teste/Teste/SenhasMysql

Pronto td funcionando!!!

Criado 25 de junho de 2008
Ultima resposta 26 de jun. de 2008
Respostas 12
Participantes 4