fj21 da Caelum - Dúvida ao chamar servlet no Tomcat

Boa tarde pessoal,

Estou seguindo a fj21 da caelum, capitulo 5, que trata sobre servlets.

Abri meu web.xml e add o que pede na apostila:

[code]

servletTeste classes.servlets.TesteServlet servletTeste /teste [/code]

Ao reiniciar o Tomcat, e chamar a url http:///localhost:8080/servlets/teste dá erro 404

O meu servlet (de nome TesteServlet1) está no diretório Tomcat 7.0\webapps\ROOT\WEB-INF\classes\servlets

Se precisarem de maiores informações pra poderem me ajudar, só perguntar.

Grande abraço.

Meu web.xml completo:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>

<servlet>
	<servlet-name>servletTeste</servlet-name>
	<servlet-class>servlets.TesteServlet1</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>servletTeste</servlet-name>
	<url-pattern>/teste</url-pattern>
</servlet-mapping>

</web-app>

verifique a sua chamada no browser,

vc está chamando assim: http:///localhost:8080/servlets/teste

lembre-se que é http://[endereço do servidor]/[nome da aplicação]/[pagina ou servlet]

digo isso pq vc pode está se confundindo o nome da sua aplicação com o nome do seu pacote onde estar a servlet

Olá philos_java,

pode ser msm, mas como faço pra criar esse “nome da aplicação”?

Mto obrigado por estar ajudando.

é o nome que vc deu quando criou seu projeto web.

Por exemplo, se vc deu o nome do seu projeto de “AplicacaoWeb” e no web.xml no url-pattern da sua servlet está “/minhaservlet”, então para chamar sua servlet faça:

http://localhost:8080/AplicacaoWeb/minhaservlet

ver se está tudo certo!

Olá philos_java,

Vou verificar isso aqui, vou aproveitar e dar uma lida na apostila com mais calma, pode ser que eu tenha pulado alguma etapa.

Depois posto no que deu.

Mto obrigado pela atenção e ajuda.

Abraços.

Li e reli a apostila e não consigo resolver o problema.

Alterei o nome da classe e dos diretórios pro jeito que ta exatamente na apostila, segue abaixo a estrutura:

http://upload.crazzy.com.br/show-image.php?id=35c401393edd54696b8e83383b43226c

E o web.xml


<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>


  <servlet>
	<servlet-name>servletOiMundo</servlet-name>
	<servlet-class>br.com.caelum.servlet.OiMundo</servlet-class>
  </servlet>
  <servlet-mapping>
	<servlet-name>servletOiMundo</servlet-name>
	<url-pattern>/oi</url-pattern>
  </servlet-mapping>


</web-app>

Quando tento chamar http://localhost:8080/fj21-agenda/oi dentro do eclipse:

HTTP Status 405 - HTTP method GET is not supported by this URL


type Status report

message HTTP method GET is not supported by this URL

description The specified HTTP method is not allowed for the requested resource (HTTP method GET is not supported by this URL).


Apache Tomcat/7.0.26

Isso com tomcat startado por la msm.
Quando tento pelo browser, msm ja tendo configurado o context e parado o processo do tomcat dentro do Eclipse, da erro 404.

Consegui fazer rodar dentro do eclipse. Eu tava sobrescrevendo o método service de HttpServlet, quando precisava sobrescrever o método doGet (ao menos foi isso que encontrei como resposta, e funcionou).
O estranho é que quando encerro o tomcat dentro do eclipse e o iniciou manualmente pelo windows e tento rodar pelo browser, continua dando erro 405, que diz que url solicitada não pode executar um GET. Alguem saberia o pq?

abaixo segue o código do servlet pra ajudar.

package br.com.caelum.servlet;

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;

public class OiMundo extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			
			PrintWriter out = response.getWriter();
			
			out.print("<html>");
			out.print("<body>");
			out.println("<h1>");
			out.print("Olá Mundo!");
			out.println("</h1>");
			out.print("</body>");
			out.print("</html>");
	}
}

Grato desde já.

Abraços.