Servlet: onde está o erro? Nao aguento mais aquele 404

20 respostas
Ticianne

:oops:

Acho que todo mundo aqui ja viu meu codigo.

Mas, ta dando problema de novo....
nao aguento mais a tela do erro 404 do tomcat...

aqui vao os codigos... se alguma alma caridosa puder me ajudar....

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
 version="2.4">
	<display-name>Teste de conexao BD</display-name>
	<description>
	
	</description>

	<servlet>
		<servlet-name>Conecta</servlet-name>
		<servlet-class>
			app.ticianne.Conecta
		</servlet-class>
		<init-param>
			<param-name>debug</param-name>
			<param-value>0</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Conecta</servlet-name>
		<url-pattern>/Conecta</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>Conecta</servlet-name>
		<url-pattern>*.class</url-pattern>
	</servlet-mapping>
	
</web-app>

Servlet

package app.ticianne;

import java.io.PrintWriter;
import java.io.IOException;
import java.sql.Connection;   
import java.sql.DriverManager;
import java.sql.Statement;    
import java.sql.ResultSet;    
import java.sql.SQLException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 

public class Conecta extends HttpServlet{

	private Connection connection;
    private Statement statement;
	private String driver="com.mysql.jdbc.Driver";
	private String dataBase="jdbc:mysql://localhost/testando";
	private String user="root";
	private String psswd="rootlar";
	
    
    public void init (ServletConfig config) throws ServletException{ //configura a conexao ao bd e cria a instruçao sql
        
        try{ //tenta a conexao com o banco e  cria instrucao
            Class.forName(driver);
			
			connection=DriverManager.getConnection(dataBase,user,psswd);
            
            statement = connection.createStatement();
            
        }catch(Exception e){
            e.printStackTrace();
            throw new UnavailableException(e.getMessage());
        }
    }
    //processa a resposta da busca
    protected void doGet(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOException{
		PrintWriter out=res.getWriter();
			out.println("<html><body><center><bold> Busca no banco de dados</bold></center>");
			
			String busca;
			
			try{
				busca="SELECT * FROM tabela";
				ResultSet resposta = statement.executeQuery(busca);
				
				while (resposta.next()){
					out.println(resposta.getString(1));
					
				}
				resposta.close();
				out.println("</body></html>");
				out.close();
				
			}catch(SQLException e){
				e.printStackTrace();
		         out.println( "<title>Error</title>" );
		         out.println( "</head>" );  
		         out.println( "<body><p>Database error occurred. " );
		         out.println( "Try again later.</p></body></html>" );
		         out.close();
			}
    }
			public void destroy()
			   {
			      // tenta fechar instruções e conexão do banco de dados
			      try 
			      {
			         statement.close();
			         connection.close();
			      } // fim do try
			      // trata exceções de banco de dados retornando um erro ao cliente
			      catch ( SQLException sqlException ) 
			      {
			         sqlException.printStackTrace();
			      } // fim do catch
			   }
			
	
}

20 Respostas

Ticianne

A estrutura de pastas está toda completa.

Tambem ja adicionei o driver ao classpath.

joao.junior

ola,
ja aconteceu isso comigo, dai eu baixei o netbeans só pra testar e consegui fazer com ele, mas acho que o eclipse faz isso tambem.

Eu fui no menu file->new java Servlet pelo assistente dai ele cria a servlet basica atraves de template e cadastra a mesma no web.xml automaticamente.
Dai é só tu alterar o arquivo da servlet com seu codigo…

:smiley:

Ticianne

e entao ?!?!?!
Acho que so me resta jogar o tomcat no lixo…

:frowning:

Ticianne

ta, vou tentar assim, junior

K

Ticianne,

Olha o log do tomcat no console. Ele exibe o erro.
Foi assim que encontrei o erro naquele seu ultimo servlet.
Chama a aplicaçao no navegador, e olha o log no console, as vezes o erro nao e de configuraçao no web.xml etc… e sim de algo no seu proprio servlet que ele nao consegue exibir.
Aquele dia funcinou aqui com as alteraçoes que eu te passei.

V

Olá !!

Intão ja me deparei com isso tb, a principio era erro do web.xml, referente a localização do servlet na estrutura de diretorio do projeto.
Da uma checada nisso. :slight_smile:

até ++

Ticianne

Como faço no eclipse?? ele nao me deixa selecionar nada…

V

Nao deixa , como ? ele exibe alguma msg ?

K

Como? nao entendi a pergunta…

Leandro_BSB

Como está o server.xml?

Como você está chamando pelo browser?

[]s

Leandro

J

Você está escrevendo o nome da classe conforme está descrito lá no xml? Pois Conecta é diferente de conecta

Dê uma conferida nesses nomes.

legionarioba

Como é que você está tentando chamar essa servlet via aplicação? Qual url?

J

Experimente tirar as linhas

<servlet-mapping> <servlet-name>Conecta</servlet-name> <url-pattern>*.class</url-pattern> </servlet-mapping>

do web.xml e teste a chamada da classe, Conecta, com C maiúsculo.

Ticianne

http://lyra:8080/Conexao/servlet/Conecta

acesso assim.

ja retirei a linha do web que o juliano falou. nada.

pelo log tambem nao descobri muita coisa…

mas tem uma linha que diz : WARNING: A docBase C:\Arquivos de programas\Apache Software Foundation\Tomcat 5.5\webapps\Conexao inside the host appBase has been specified, and will be ignored

e a linha de erro reclama de um projeto que eu apaguei do tomcat, e que num tem nada a ver com esse aqui…

:frowning:

Leandro_BSB

Seguem os passos para chamar o seu servlet:

  1. Inclua a seguinte linha no arquivo server.xml que está na pasta conf do Tomcat:
&lt;Context path = "/Up" docBase = "C:\eclipse 3.2M1\workspace\Up"/&gt;

em docBase, coloque o caminho para o seu projeto no eclipse. Esta linha deve ser incluída dentro do elemento Host do arquivo.

  1. Coloque o seguinte web.xml dento da pasta WEB-INF do seu projeto:
&lt;!DOCTYPE web-app PUBLIC
	"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
	"http://java.sun.com/dtd/web-app_2_3.dtd"&gt;

&lt;web-app&gt;
	&lt;servlet&gt;
		&lt;servlet-name&gt;teste&lt;/servlet-name&gt;
		&lt;servlet-class&gt;app.ticianne.Conecta&lt;/servlet-class&gt;
		&lt;init-param&gt;
			&lt;param-name&gt;debug&lt;/param-name&gt;
			&lt;param-value&gt;0&lt;/param-value&gt;
		&lt;/init-param&gt;
		&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
	&lt;/servlet&gt;
	&lt;servlet-mapping&gt;
		&lt;servlet-name&gt;teste&lt;/servlet-name&gt;
		&lt;url-pattern&gt;/url&lt;/url-pattern&gt;
	&lt;/servlet-mapping&gt;

&lt;/web-app&gt;
  1. Inicie o Tomcat
  2. Pelo browser, chame o servlet assim:

    http://localhost:8080/Up/url

[]s

Leandro

Ticianne

por que /up?? e url?? devo substituir isso,ne??

Leandro_BSB

Se quiser, pode substituir. Funcionou desta forma?

[]s

Leandro

Ticianne

nao, nao… nem assim nem substituindo

Leandro_BSB

Faça o seguinte teste:

  1. Substitua o seu servlet pelo seguinte:
package app.ticianne;

import java.io.IOException;

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

public class Conecta extends HttpServlet {

	public void init(ServletConfig config) throws ServletException { 

		System.out.println("init");
	}

	// processa a resposta da busca
	protected void doGet(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		
		System.out.println("doGet");
		
	}

	public void destroy() {
		System.out.println("destroy");
	}

}
  1. Pare o Tomcat.
  2. Verifique, pelo menu Project do seu eclipse, se a opção Build Automatically está selecionada
  3. Inicie o Tomcat
  4. Verifique, no log, se há a seguinte mensagem: “init”:
  1. Se houver esta mensagem, o servlet está corretamente mapeado. Se não, e se você tiver alterado os arquivos server.xml e web.xml conforme eu orientei, provavelmente a estrutura da sua aplicação não estará correta.

[]s

Leandro

pispico

O erro de pagina 404 ocorre também quando ao usar por exemplo o tomcat como Servlet container vc não coloca dentro da pasta lib o driver do mysql, pois caso dentro da sua classe você nao trate o erro ocorre o erro 404.

No meu caso funcinou, o driver que eu estava usando era o de mysql ( mysql-connector-java-5.1.7-bin ) e a minha IDE era o eclipse, O projeto era em JSP e Servlet.

Abraços…

Criado 20 de julho de 2006
Ultima resposta 21 de jan. de 2010
Respostas 20
Participantes 8