Ref.: Criando um SERVLET

Alguém tem um exemplo de um SERVLET que primeiro faça uma conexão no Mysql e depois mostre o resultado de uma tabela em uma TABLE html?

Obrigado.

PS. Estou tentando criar meu primeiro SERVLET

Como diria Jack Estripador.
“Vamos por partes” :lol:
Brincadeira. Se é o seu primeiro servlet você terá que mapear o servlet no web.xml
Você terá que ter uma string de conexão para conectar com o mysql
você já baixou o jar responsável por conectar ao banco?
o que você sabe de servlets?
talvez alguém possa te indicar uma apostila básica…

Bom!

Estou tentando aprender isso na marra a muito tempo.
Tenho várias apostilas, Quero saber se tenho que fazer isso na munheca.

Fiz isso para Aplicação Desktop

Não seria só embutir o código dentro SERVLET?

Segue aí um exemplo básico mas este conecta com Oracle10g

package br.com.mlp.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestaBanco {

	public static void main(String[] args) {
		
		/*******************************
		 * jdbc       = protocolo
		 * oracle     = subprotocolo
		 * thin       = tipo de acesso
		 * @127.0.0.1 = máquina
		 * XE         = nome do banco
		 ******************************/
		
		String url     = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
		String usuario = "System";
		String senha   = "manager";
		
		String sql     = "SELECT * FROM aluno";
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			Connection conn = DriverManager.getConnection(url,usuario,senha);
			
			Statement stm = conn.createStatement();
			ResultSet res = stm.executeQuery(sql);
			
			//Relatorio
			while (res.next()) {
				System.out.println(res.getString("MATRICULA") + " " + res.getString("NOME"));
			    //res.next();
			}
			
		}catch(ClassNotFoundException e) {
			e.printStackTrace();
		}catch(SQLException ex) {
			ex.printStackTrace();
		}

	}
}

Lacerda!

          Então coloco isso dentro do meu código SERVLET?

[code]
package br.com.extratos;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class for Servlet: ExtratoConta

/
public class ExtratoConta extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
/
(non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public ExtratoConta() {
super();
}

/* (non-Java-doc)
 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// TODO Auto-generated method stub
	response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<html><head><title>XXXXXXXXXXXXXX</title></head>");
    out.println("<body>");
    out.println("Hello World!!"); 
    
    out.println("<table borde=\"1\" width=\"400\">"); 
    out.println("<tr>"); 
    out.println("<td> Novos Cadastros </td>"); 
    out.println("<th> Outubro </th>"); 
    out.println("<th> Novembro </th>"); 
    out.println("<th> Dezembro </th>"); 
    out.println("</tr>"); 
    out.println(""); 
    out.println("<tr>"); 
    out.println("<td> Alunos </td>"); 
    out.println("<th> 10 </th>"); 
    out.println("<th> 03 </th>"); 
    out.println("<th> 16 </th>"); 
    out.println("</tr>"); 
    out.println(""); 
    out.println("<tr>"); 
    out.println("<td> Professores </td>"); 
    out.println("<th> 03 </th>"); 
    out.println("<th> 07 </th>"); 
    out.println("<th> 11 </th>"); 
    out.println("</tr>"); 
    out.println("</table>"); 

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

    out.println("</body>");
    out.println("</html>");
    out.close();
}  	  	  	    

}[/code]

… e, enquanto leio a tabela implemento minha TABLE?

É isso mesmo!?

segue um exemplo de servlet que lista uma série de alunos em uma tabela no BD

package br.com.mlp.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ListarAluno extends HttpServlet {
	private String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
	private String usuario = "System";
	private String senha = "manager";
	private Connection conn;
	private Statement stm;
	private ResultSet res;

	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		PrintWriter out = response.getWriter();

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection(url, usuario, senha);
			String sql = "select cod,matricula,nome,email from aluno";

			stm = conn.createStatement();
			res = stm.executeQuery(sql);
			out.println("<html>");
			out.println("<body>");
			out.println("<h3> Alunos Cadastrados </h3>");
			out.println("<hr>");
			out.println("<table>");
		
			// Relatorio
			boolean liga = true;

			while (res.next()) {
				out.println("<tr bgcolor="+ ((liga = !liga)?"#00B0B0":" ") + ">");
				out.println("<td>" + res.getString("COD") + "</td>");
				out.println("<td>" + res.getString("MATRICULA") + "</td>");
				out.println("<td>" + res.getString("NOME") + "</td>");
				out.println("<td>" + res.getString("EMAIL") + "</td>");
				out.println("</tr>");
			}
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException ex) {
			ex.printStackTrace();
		}
		out.println("</table>");
		out.println("</html>");
		out.println("</body>");

	}

}

prsantos,
aí vai um exemplo mais simples de se entender.
Este exemplo exibe os nomes das tabelas no seu BD.

package br.com.mlp.jdbc;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestaServlet extends HttpServlet {

	String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";

	String usuario = "System";

	String senha = "manager";
	
	private Connection conn;

	private Statement stm;

	private ResultSet res;
	
	String sql = "SELECT TABLE_NAME FROM TABS";
	
	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		PrintWriter out = response.getWriter();

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection(url, usuario, senha);
			stm = conn.createStatement();
			res = stm.executeQuery(sql);	
				
			out.println("<h3>Banco Conectado!!!</h3>");
			
			while (res.next()) {
				out.println(res.getString(1));out.println("<br>");
			}
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

Abraços

Bom dia!

Muito obrigado BRUNO!

Ontem tive que sair cedo, só agora colocarei em prática o seu exemplo.

Valeu MERMO!

Como posso colocar a parte de conexão em um só lugar?

Preciso saber agora como e quando usar os métodos de um SERVLET.

No meu exemplo usei doGET, no seu usou SERVICE

Estou confuso quanto a isto.

Pode me ajudar com isso

No que eu puder te ajudar eu ajudarei mas como sou iniciante não tenho muita certeza do que estou dizendo as vezes. por isso se eu estiver fazendo confusão, por favor me corrija(m).
Até onde eu sei o método service é padrão de servlet. Tipo: Todo servlet tem que ter este método para receber e enviar parâmetros via HTTP. (HttpServletRequest recebe e HttpServletResponse envia ou responde).

Quanto a parte de conexão em um só lugar…
O ideal é você ter uma classe possui um método que retorna uma conexão. Assim você não precisa ficar escrevendo a conexão toda vez que quiser acessar o banco de dados basta chamar o método que retorna uma conexão e pronto.
Exemplo:

package br.com.skafe.web.connectionfactory;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {

	public static Connection getConnection() throws SQLException {
		
		try {
			String url = "jdbc:oracle:thin:@localhost:1521:XE";
			String user = "system";
			String password = "manager";

			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("Database Connected!!!_ConnectionFactory");
			return DriverManager.getConnection(url, user, password);

		} catch (ClassNotFoundException e) {
			throw new SQLException(e.getMessage());
		}
	}

Utilizando o método getConnection
Ex que recupera o valor de uma sequence criada no bd

package br.com.skafe.web.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import br.com.skafe.web.connectionfactory.ConnectionFactory;
import br.com.skafe.web.modelo.Incidente;

public class IncidenteDAO {

	private String sequence;

	private Connection connection;
     
                public String getSequence() throws SQLException {
		this.connection = ConnectionFactory.getConnection();
		PreparedStatement pstm = this.connection
				.prepareStatement("select sec_idincidente.nextval from dual");

		ResultSet res = pstm.executeQuery();

		while (res.next()) {
			this.sequence = res.getString(1);
		}

		return this.sequence;
	}

Procure informações sobre MVC.
[]'s

Blz!, quanto a conexão ficou claro, porém essa classe não seria o tal do BEAN?

Criar um BEAN e depois invoca-lo quando for preciso?

Quanto a iniciante, quanto mais iniciante melhor!, pois tem mais paciência e, é ensinando que se aprende.
Estou a quase dois anos tentando sozinho, aprender JAVA. Já desenvovi para DESKTOP, várias classes que auxiliam o desenvolvimento rápido.

Estou montando uma boa biblioteca, para poder usar em meus projetos.

Já criei meu próprio HIBERNATE, agora quero aprender de uma vez por todas o tal do J2EE, só que pelos forum é difícil encontrar alguém disposto a ajudar com muita vontade como está fazendo.

Na maioria das vezes, fico a espera de uma resposta a dias.

Como não é assim! . Se tem algo que posso fazer para ajudar, para o que estou fazendo e ajudo.

Podes crer.

Tenho só dois amigos que me ajudam muito é Luciano Castilho(MS) e Alderedo(PE).

MAs valeu!
Vamos continuar nos ajudando.

Ireo Comer algo agora, “Cobra que não anda, não engole sapo.”

KKKKKKKKKKKK
Abraços.

Vamos lá.
BEAN que você está falando seria o javaBean (jbean)?
Pelo que eu sei “BEAN” (javabean) é uma classe que possui seus atributos, um método construtor público vazio (sem argumentos) e métodos get e set para cada atributo. pojo(plain old java object)
Um jbean vai te ajudar a persistir e recuperar os dados no bd.
Muitos frameworks e api’s utilizados no mercado hoje são baseados em jbean. Ex. taglib.
Na verdade esta classe se chama ConnectionFactory responsável prover implementações de conexão para vários tipos de BD (Mas nunca fiz para acessar mais de um BD).

Comentários a parte, estou com um probleminha aqui que está difícil de solucionar.
Dá uma olhada neste post.
Tá brabo. rsrs


http://guj.com.br/posts/list/68940.java

KKKKKKKKKKKKKKK

OK!, Valeu.

KKKKKKKKKKKKKKK

OK!, Valeu.

Bruno!

Só uma dica para seu problema.

Não saco direito sobre HTML, porém, deve ter alguma forma de se obter o valor da linha seleciona dessa tabela.

Irei pesquisar na WEB pra vc.

Outra dica, é ver se no contexto da página exibe informações sobre esse conteúdo, tipo um array de elementos dessa TABLE.

Só uma dica hein!

Valeu Paulo.
Saca só…
aí na empresa onde você trabalha não estão precisando de estagiário java não???
Tô pra rôlo cara. rsrs
Estou no 7º período e estou caçando um estágio.

Por enquanto não!
Tá ralando no centro?

Pode deixar que se aparecer algo, falo contigo.

Bom Final de Semana

Tô ralando em Nova Iguaçu.
Qualquer coisa você me manda uma mp.
Bom final de semana pra você também.
[]'s