MInha servlet não tá fazendo o que eu quero! =P

1 resposta
ocanema

Boa tarde pessoal.

O problema é o seguinte... fiz dois métodos para que eu pudesse alterar as iniciais de palavras para Maiúsculas depois de receber a propriedade "nome" do endereço de URL e assim utilizar a string resultante para fazer a consulta em um banco de dados. Mas não está ocorrendo como planejado.. eu testei os dois métodos ( setUpperCaseFt() e upperCaseTk() ) em um programinha do tipo "public static void main(String[] args)" e as funções executam o que devem executar.. mas na servlet não... Ela compila certinho sem erros, mas nao faz o certo na execução!

Uma luz aí!
ehuahuae!

Código abaixo

import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class RequestServlet extends HttpServlet{
  protected void doGet(HttpServletRequest req, HttpServletResponse res) 
                       throws ServletException, IOException{
    String nomee = req.getParameter("nome");
    String nome = setUpperCaseFt(nomee);  
    String balance = accountLookup(nome);

    if (balance == null){
      res.sendError(res.SC_BAD_REQUEST, "Unable to locate account.");            
      return;
    }

    res.setContentType("text/plain");    
    PrintWriter out = res.getWriter();
    out.print(balance);
    out.close();
  }
  public String setUpperCaseFt(String nome){
	String[] s1 = new String[10];
	String a = "";
	StringTokenizer st1 = new StringTokenizer(nome," ");
	System.out.println(st1.countTokens());
	int i = 0; 
	while(st1.hasMoreTokens()){
		s1[i] = st1.nextToken();
		s1[i] = upperCaseTk(s1[i]);
		a += s1[i] + " ";
		i++;
	}
	return a;
    }
  
    public String upperCaseTk(String token){
	char[] h = token.toCharArray();
	String s2 = "";
	h[0] = token.charAt(0);
	s2 += h[0];
	s2 = s2.toUpperCase();
	for(int i = 1; i < token.length(); i++){
		s2 += h[i];
	}
	return s2;
    }
	
  private String accountLookup(String nome){
    Connection con = null;
    Statement st = null;
    StringBuffer msgb = new StringBuffer("");

    try{
      //aqui vai a configuração do driver do BD      
      Class.forName("org.postgresql.Driver");  
      con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres", "ocanema", "postgres");

      Statement stmt = con.createStatement();
      ResultSet rs = stmt.executeQuery("SELECT describe, endereco FROM act WHERE nome = '" + nome + "'");      
      
      if (rs.next())
        return rs.getString("describe") + "|" + rs.getString("endereco");
      else
        return null;
    }
    catch (Exception e){
      return e.toString();
    }
}
 
  /*--------------------------------------------------
  * Informação sobre a servlet
  *-------------------------------------------------*/     
  public String getServletInfo()
  {
    return "Tentativa no 89547.. sei la perdi as contas! =P";
  }
}

Agradeço desde já!
;)

1 Resposta

otaviofcs

Você não deve estar submetendo um campo cujo nome seja “nome”. Verifique maiúsculas e minúsculas.

Ok, como você está usando o get, pode ser que você não esteja chamando corretamente o servlet com endereço requestservlet?nome=teste (ao invés de requestservlet deve ser outro nome mapeado no seu web.xml).

Dica: use o junit para fazer os testes, acaba ficando sempre mais rápido, mesmo para programinhas só de teste.

Criado 19 de setembro de 2007
Ultima resposta 19 de set. de 2007
Respostas 1
Participantes 2