Executar servlets, endereço e <servlet-mapping>

Estou com um problema comum.
Não entendi como deve ser o endereço na hora de executar meu servlet.
Não entendi (sei o porquê da existência) o (os campos de nome, class, …)
Não entendi se o web.xml que deve ser configurado é o que fica junto com o servlet ou aquele que fica logo depois de WEB-INF.

Já pesquisei bastante, os livros geralmente confundem muito (muitas versões diferentes) e os tópicos que pesquisei (muitos²) não me ajudaram.

Se alguém puder me ajudar vai acabar com a minha impaciência (estou faz 2 horas pesquisando isso).

Quero executar o mundialmente famoso HelloWorld (que já existe desde a década de 1970 que eu nem era nascido )…

Obrigado.

Não entendi como deve ser o endereço na hora de executar meu servlet.

O endereço para executar o seu servlet é o que vc coloca na tag que está entre as tags e no seu arquivo web.xml.

Não entendi (sei o porquê da existência) o (os campos de nome, class, …)

O existe para fazer o que seu nome diz :roll: … um mapeamento de um determinado servlet, o qual é referenciado pela tag , a um padrão de url. Com isso vc não precisa acessar seu servlet através de um nome e classe por exemplo. Imagine que um dia o nome de sua classe servlet mude, vc não precisará mudar a forma de acesso a ele só por isso. Pois haverá um mapeamento.

Não entendi se o web.xml que deve ser configurado é o que fica junto com o servlet ou aquele que fica logo depois de WEB-INF.

Só existe um web.xml, e é o que fica logo abaixo de WEB-INF.

Existe um livro mto bom que não deixará dúvidas em sua cabeça.
É o Use a Cabeça - Servlets e JSP

Flw.

&lt;servlet&gt;
	&lt;description&gt;
	&lt;/description&gt;
	&lt;display-name&gt;
	BuscaBanco&lt;/display-name&gt;
	&lt;servlet-name&gt;BuscaBanco&lt;/servlet-name&gt;
	&lt;servlet-class&gt;
	com.servidor.BuscaBanco&lt;/servlet-class&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;BuscaBanco&lt;/servlet-name&gt;
	&lt;url-pattern&gt;/BuscaBanco&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

servlet-name será o nome do msm,
class o pacote em que ele está

agora no mapping é o seguinto no url-pattern será qual o endereço que será usado para chamar este servelet,

no exemplo acimo em uma pagina jsp para chamar o servlet seria assim

Buscar

Esse tópico pode te ajudar:http://www.guj.com.br./posts/list/92672.java

Obrigado pelas explicações e dicas.

Sendo o diretório do meu servlet esse:

C:\Tomcat\webapps\ROOT\WEB-INF\app1\WEB-INF\classes\HelloWorld

Como fica na hora de executar ele depois de http://localhost:8080/ ?

Sobre esse tópico indicado ele fala coisas diferentes dos outro que li (os diretórios por ex.) e em outros eu li que precisava colocar uma cópia do web.xml junto com o servlet.

Bom, tive alguma evolução.

Executei mas não funcionou.

java.lang.ClassNotFoundException: HelloWorld
javax.servlet.ServletException: Wrapper cannot find servlet class HelloWorld or a class it depends on

Olá

O caminho está correto. Por exemplo:
Se vc colocou o BuscaBanco.class dentro de WEB-INF/classes/com/servidor/ o mapeamento no web.xml deverá ficar assim

 <servlet-class>com.servidor.BuscaBanco</servlet-class> 

Bom, então se eu coloquei dentro da pasta classes eu só coloco assim

HelloWorld

??

Não funciona também, continua dando:

javax.servlet.ServletException: Wrapper cannot find servlet class HelloWorld or a class it depends on

java.lang.ClassNotFoundException: HelloWorld

Se você tiver usando tomcat ele não irá reconhecer dessa forma. coloque o dentro de um pacote.

1 curtida

Faz isso, baixa a apostila fj21 da caelum que nessa apostila ela explica tudo direitinho.
http://www.caelum.com.br/caelum/curso-21.jsp