Utilização do web.xml ("mapeamento" de servlets)

5 respostas
richardpeder

Amigos:

Quando fui tentar rodar um HelloWorld.java (servlet) com o Tomcat 4.1.2.9 me deparei com um problema: Criei uma nova pasta dentro do webapps, criei dentro desta pasta nova o WEB-INF, e dentro delas o classes, e dentro do WEB-INF coloquei o web.xml padrao…até ai normal.
Porém, quando fui rodar o HelloWorld, não consegui de nenhuma forma.

Estava tudo setado de forma correta (aparentemente :lol: ) e não funcionava.

Dai resolvi mapear o web.xml com o HelloWorld:

<?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>HelloWorld</servlet-name>
      <servlet-class>HelloWorld</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>HelloWorld</servlet-name>
      <url-pattern>/servlet/HelloWorld</url-pattern>
   </servlet-mapping>
</web-app>

//escrito pelo Caio  :lol:

Apos fazer isso com o web.xml (eu não, o Caio… 8) ), dai o meu HelloWorld funcionou normalmente, sem problema algum, numa url assim:

http://localhost:8080/Richard/servlet/HelloWorld

Agora vem a pergunta: è necessário mapear todos os servlets no web.xml? O que pode ser isso? A versão do tomcat, por exemplo? Ja aconteceu com vcs??

Se não é necessário mapear, o que é necessário fazer no web.xml padrão para que ele aceite todos os servlets, nas mais variadas pastas dentro do webapps?

Agradeço desde já a ajuda dos amigos.

ate mais…

5 Respostas

Bani

O mapeamento “genérico” é esse aqui:

<servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping>

cv1

É necessário mapear todos os servlets. Sempre. Se você não fizer isso, nada garante que o seu application server vai ser bonzinho e te deixar rodar os ditos cujos.

Consulte a especificacao de Servlets pra mais info :wink:

PS: invoker, apesar de ser uma mão na roda, é feio e te deixa com mau hálito naquelas manhãs de domingo quando seu celular tocar e vc descobrir que alguem menos experiente resolveu brincar com o deployment e fazer um servlet chamado, curiosamente, de ‘AutenticaUsuario’ - que sobrescreveu o seu servlet anterior. Boom, brecha de segurança. Agora tem um cara ligando e ameaçando vender os 50 mil cartões de crédito. Tarde demais :smiley:

dreamspeaker

invoker :?: :?: :?: :?: :?: :?: :?: :?:

richardpeder

Pessoal:

Com esse “mapeamento genérico” que a Bani passou, é possivel rodar qq servlet numa boa? Esse problema de ter que mapear no web.xml é uma obrigatoriedade do TomCat 4.1.2.9???

agradeço desde já.

ate mais…

cv1

Sim, eh possivel rodar qualquer servlet, [size=“24”]MAS NAO FAÇA ISSO[/size], uma vez que vc abre uma brecha enorme pra ter dores de cabeca mais tarde. Nao eh uma peculiaridade do Tomcat, estah na especificacao.

Criado 9 de dezembro de 2003
Ultima resposta 9 de dez. de 2003
Respostas 5
Participantes 4