Dúvida Servlet

7 respostas
L

Galerinha, to começando com servlets e fiz uma aplicaçãozinha bem básica e simples, na verdade eh só um teste....

Fiz um servlet que acessa o banco de dados, no caso, SQL SERVER, e faz uma consulta e exibe os dados na tela.... tah funcionando belezinha!!

aqui tah o servlet...

SelectServlet.java
import java.io.*;
import java.net.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SelectServlet extends HttpServlet {
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        
        Connection conn = null;
        ResultSet result = null;
        Statement stmt = null;
        String URL = "jdbc:jtds:sqlserver://localhost:1433/MuOnline";

        try{
            Class.forName( "net.sourceforge.jtds.jdbc.Driver" );
        }
        catch( Exception e ){
            System.out.println("Erro ocorreu " + e);
        }
        
        try{
            conn = DriverManager.getConnection( URL, "user", "senha" );
        }
        catch( SQLException e ){
            System.out.println("Erro ocorreu " + e);
        }
        
        try{
            stmt = conn.createStatement();
            result = stmt.executeQuery("SELECT * FROM Character");
        }
        catch( SQLException e ){
            System.out.println("Erro ocorreu " + e);
        }
        
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();  
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet SelectServlet</title>");
        out.println("</head>");
        out.println("<body>");
        try{
            while(result.next()){
                out.println("<h1>" + result.getString("Name") + "</h1><br>");
            }   
        }
        catch(Exception e){
            System.out.println("Erro ocorreu " + e);
        }
        out.println("</body>");
        out.println("</html>");
        out.close();
    }    
}

Como eu não manjo muito, gostaria de saber se essa eh melhor maneira de fazer esse tipo de coisa, ou tem um modo melhor ou mais correto.

Se tiver um jeito melhor gostaria de uns exemplos... mas exemplos completos, como esse aí q eu fiz....

Vlw!

7 Respostas

Z

Depende das suas pretensões. A principio, se o servlet vai para um ambiente sério (não só de aprendizado), o uso de um pool de conexões é indispensável.

E uma sugestão: acho que você poderia reduzir o números de trys para apenas 1 e colocar vários catches, dependendo das exceções que você tenha interesse em capturar. Caso você queira tratar todas as exceções da mesma maneira (imprimindo a pilha de execução, por exemplo), pode colocar apenas o catch(Exception e).

E coloque e.printStackTrace() no lugar de System.out.println("Erro ocorreu " + e), a mensagem apresentada vai fazer mais sentido na hora de achar o erro.

Mauricio_Linhares

Olha, não seriam exatamente maneiras melhores, mas talvez mais simples ou mais fáceis de manter.

Uma coisa que é muito difundida na comunidade, é que servlets não deveriam ser usados pra exibir informações, eles deveriam receber a requisição, fazer o tratamento, preparar os objetos e chamar um JSP pra exibir isso (ou qualquer outra coisa que vá exibir isso).

Usar bancos de dados diretamente também é uma coisa que não é muito recomendável, seria melhor que você usasse um DataSource ou um pool de conexões (um conjunto de conexões que podem ser reutilizadas na aplicação) pra melhorar a performance da aplicação.

E ainda tem os esquemas de mapeamento objeto/relacional, que transformam o seu modelo de objetos em um banco relacional ou o contrário, como o Hibernate. Aqui na área de artigos do GUJ tem muita coisa sobre tudo isso, é só dar uma procurada.

Z

Eu já acho que mapeamento objeto/relacional você pode deixar para um pouco mais adiante. :mrgreen:

L

wowwww… entendi +ou-

Vcs pode me dar um exemplo de pool de conexões, bem simples assim, tipo usando esse exemplo??

e assim, como eu vejo no jforum ou aki mesmo no guj, eu nao vejo o uso de jsp, pelo menos aparentemente… eh isso que estou tentando fazer usar somente servlets, como nesses projetos q mencionei, jforum e o portal guj mesmo…!

Mauricio_Linhares

leoloko:
wowwww… entendi +ou-

Vcs pode me dar um exemplo de pool de conexões, bem simples assim, tipo usando esse exemplo??

e assim, como eu vejo no jforum ou aki mesmo no guj, eu nao vejo o uso de jsp, pelo menos aparentemente… eh isso que estou tentando fazer usar somente servlets, como nesses projetos q mencionei, jforum e o portal guj mesmo…!

Criando um pool de conexões usando DBCP:

http://jakarta.apache.org/commons/dbcp/apidocs/org/apache/commons/dbcp/package-frame.html

E sobre os JSPs, é só uma questão de gosto, mas eles não usam Servlets não (ou não apenas), o que você vê do JFórum e do GUJ são gerados pelo FreeMarker:

http://freemarker.org/

Z

E outro detalhe (esse mais crítico ainda): você não fechou a conexão com o banco de dados :!:

L

hummmm… eh eu tb to querendo usar o freemarker, jah tinha lido sobre ele e tal…

É um bom template engine??

e sobre fechar a conexão… hehehe eu esqueci :oops: :oops: … mas concerteza eu iria fechar… hehehe!

Valew galera, jah me ajudaram bastante!

Criado 20 de junho de 2005
Ultima resposta 20 de jun. de 2005
Respostas 7
Participantes 3