Não consigo abrir um servlet

Olá a todos, estou tendo dificuldades em abrir um servlet que criei para treinar
se eu colocar todo o caminho dele (http://localhost:8080/web/Teste.java) ele abre, mostrando o fonte da classe, se eu coloco sem o .java ele da o erro:

HTTP Status 404 - /web/Teste
type Status report
message /web/Teste
description The requested resource (/web/Teste) is not available.
Apache Tomcat/6.0.14

essa classe se encontra na raiz do projeto, não está dentro de nenhuma pasta

meu web.xml se encontra no mesmo lugar que a classe:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
  	PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
	"http://java.sun.com/dtd/web-app_2_3_dtd">

<web-app>
	<servlet>
		<servlet-name>Teste</servlet-name>
		<servlet-class>Teste</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>Teste</servlet-name>
		<url-pattern>/Teste</url-pattern>
	</servlet-mapping> 
</web-app>

alguem pode me ajudar nisso? há algo errado no meu web.xml? algum outro fator pode estar influenciando o andamento?

att,
Fernando Cartaxo

–edit–
só a termos de informações, uso o tomcat 6.0 e o plugin sysdeo no eclipse

Caro Fernando,
sua classe deve ser compilada, e o arquivo Teste.class resultante da compilação deve ser colocado dentro do diretório /web/WEB-INF/classes

Qual o contexto da sua aplicação web?

Prq vc definiu no seu web.xml que URL que “mapeará” seu servelet seria isso: http://localhost:8080/meuContexto/Teste

[quote]Caro Fernando,
sua classe deve ser compilada, e o arquivo Teste.class resultante da compilação deve ser colocado dentro do diretório /web/WEB-INF/classes
[/quote]

via IDE nao faz isso automaticamente? (eclipse)?

o nome do meu contexto é web, e para acessar a servlet eu faço: http://localhost:8080/web/Teste

ainda nao conseguir…
não tou achando nada parecido na net, no google, deve ser uma besteira que tou me passando

–edit
realmente nao tem nenhum .class no diretorio /web/WEB-INF/

Então, no Eclipse vc tem que ir lah em “Configure build path…” e na aba source muda o default output folder pra onde vc deseja jogar as suas classes compiladas, no caso SeuProjeto/WEB-INF/classes
Abraços!

[quote=nicoweda]Então, no Eclipse vc tem que ir lah em “Configure build path…” e na aba source muda o default output folder pra onde vc deseja jogar as suas classes compiladas, no caso SeuProjeto/WEB-INF/classes
Abraços![/quote]

Está configurado desse jeito já… pode ter alguma relação ao jdk que tou usando?

Faz assim, cria uma source folder chamada src
joga sua classe dentro dessa pasta, e tenta denovo.

Abraços

[quote=nicoweda]Faz assim, cria uma source folder chamada src
joga sua classe dentro dessa pasta, e tenta denovo.

Abraços[/quote]

fiz isso, continua dando o mesmo erro =(

–edit

acho que assim fica mais fácil de passar o que estou querendo

minha hierarquia é essa:

meu web.xml é esse:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
	PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
	"http://java.sun.com/dtd/web-app_2_3_dtd">

<web-app>
	<servlet>
		<servlet-name>Web</servlet-name>
		<servlet-class>Web</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>Web</servlet-name>
		<url-pattern>/Web</url-pattern>
	</servlet-mapping> 
</web-app>

e minha classe Web é essa:

[code]

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

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

/**

  • O método padrão invocado em um servlet é doGet.

  • A especificação 2.3 de servlet (que é a que estou trabalhando) implementa

  • os 7 métodos do HTTP 1.1 (get, head, post, options, put, delete, trace).

  • Os métodos mais comumente utilizados em aplicações web são get e post.
    */
    public class Web extends HttpServlet {

    /**

    • É executado quando é feita uma requisição com método GET pelo cliente.
    • @param request Objeto com as informações pertinentes a requisição
    • @param response Objeto com as informações pertinentes a reposta para o cliente
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      PrintWriter pw = response.getWriter(); // pega o ‘escritor’ da resposta
      pw.println("");
      pw.println(“Olá Mundo em Servlet!”);
      pw.println("");
      pw.println(“Olá Web!”);
      pw.println("");
      pw.println("");
      pw.flush(); // descarrega as informações. não é obrigatória a chamda deste método
      }
      } [/code]

Será que ajuda?

Meu caro…

Ao trabalhar com servlets, tente criar elas com pacotes específicos.

As vezes o container se perde quando tu não especifica um pacote na tua servlet.

Digamos que tu tenha uma servlet no pacote
br.com.guj

Entao, teu mapeamento ficaria da seguinte forma:

<web-app>  
    <servlet>  
         <servlet-name>web</servlet-name>  
         <servlet-class>br.com.guj.Web</servlet-class>  
     </servlet>  

É importante observar, que no parametro servlet-name tu pode especificar qualquer coisa, isso servirá somente como referência pra ti chamar no mapping.

<servlet-mapping>  
        <servlet-name>web</servlet-name>  
         <url-pattern>/primeiroexemplo</url-pattern>  
</servlet-mapping> 

No código acima, eu usei o parametro servlet-name pra chamar a referência que eu criei na , e mapiei ela pra seguinte url: http://localhost/NOMEDOTEUCONTEXTO/primeiroexemplo

NOMEDOTEUCONTEXTO = nome da webapp q tu criou no teu server.

fiz do jeito que você falou zirocool mas continuo na mesma…
algo que observei é que mesmo eu digitando localhost:8080/web onde o web é o meu contexto ele não lista os arquivos dentro dele, que em outro computador que usava e conseguir rodar a servlet listava… creio eu que deve ser algum problema de configuração…
alguem sabe o que pode ser isso?

–edit
conseguir agora, o erro era na hierarquia das classes, agora que arrumei rodou meu servlet, porém ele contiuna não listando os arquivos da pasta da minha aplicação, por exemplo, ao digitar localhost:8080/web ele deveria aparecer todos os meus arquivos, só que dá o mesmo erro de antes…

segue a minha antiga hierarquia e a nova, com seus respectivos web.xml, para caso alguem tenha o mesmo erro:

antigo

novo

mas continua minha duvida, de porque nao aparece a listagens dos arquivos da pasta da minha aplicação