Caminho da Servlet[RESOLVIDO]

15 respostas
L

Pessoal,

publiquei um site que possui uns cadastros bem básicos, usando JSP e Servlets. Até aí beleza, só que quando vou direcionar o usuário da página .html para a servlet xyz, não está encontrando o caminho da servlet. Erro típico “http 404 …”

Está assim o .html que chama a servlet:

<form action="ServletXYZ?cmd=add....">
...
..
.
</form>

Dúvida, não deveria haver problemas pois o caminho está relativo não é mesmo?
O tomcat está procurando a classe compilada servletxyz.class (então ela deveria estar no diretório root??) ?

Não sei se entenderam.
Será que alguém pode ajudar?

Grato.

15 Respostas

L

axo q faltou a extensão .JSP ou .HTML

L

luxu,
é uma servlet, por isso não coloquei a extensão.

Acho que não fui claro ainda, me desculpem. Trocando em miúdos, o que está ocorrendo que é o tomcat não está reconhecendo as servlets em ambiente de produção.

Em ambiente de homologação está funcionando. Detalhe, em produção a versão do tomcat é 6.0.20 e em homologação é 7.0.11.

E aí, alguém já passou por isso?

A

O servlet está mapeado no web.xml?

D

Se está, qual o path dele? Eventualmente, pode estar com o pacote.NomeServlet…

L

Sim,

estão todas mapeadas conforme abaixo:

<servlet>
        <servlet-name>ServletPessoaAutorizada</servlet-name>
        <servlet-class>pkgpessoa.ServletPessoaAutorizada</servlet-class>
    </servlet>

???

D

E o path da servlet
O erro gerado é referente a uma página não encontrada.

L

Você se refere à tag ?

A

Coloque a Barra “/” antes do servlet, pois dependendo do caminho relativo que sua página está ele não conseguirá mapear a servlet para o endereço:

<form action="/ServletXYZ?cmd=add....">

Por exemplo,

se sua página está em /Sistema/paginas/pagina.jsp

Se você fizer sem a barra, pelo caminha relativo, o endereço do seu servlet será:

/Sistema/paginas/Servlet

Usando a barra, o link será:

/Sistema/paginas/Servlet

Do jeito que o servlet está mapeado, ele somente será encontrado logo depois do domínio, e não em caminhos relativos.

L

Blz,

tô saindo do trampo agora, logo a noite testo e respondo…

inté

L

Andre,

fiz o teste e não precisa colocar barra invertida. No post a url já é completada.

Por exemplo:
http://www.site.net/

Tanto que quando passo o mouse sobre o botão, ele já indica na barra de status do navegador o caminho do post.

Mas valeu pela dica.

Se alguém puder ajudar agradeço.

G

Suas classes de servlets e outras estão em /WEB-INF/classes ?

L

Da seguinte maneira:
/WEB-INF/classes/nomepacote/classes de servlets

A

Você não deveria colocar o tipo do método e como a servlet está mapeada? Algo como o andreiribas falou.

No seu web.xml

...
<servlet-mapping>
	<servlet-name>ServletXYZ</servet-name>
	<url-pattern>/servetxyz</url-pattern>
</servlet-mapping>
...

No seu Html

<form action="/servletxyz" method="get">
	<input type="hidden" name="cmd">valor</input>
</form>
L

Já testei e não funcionou. Mesma mensagem de http 404. O interessante é que não é a mensagem do tomcat ou seja, é a mensagem http 404 do browser (quando é do tomcat ele escreve no rodapé tomcat…etc, etc e tal).

Minha dúvida é se após fazer o deploy, as classes servlet devem ficar abaixo do diretório com nome do pacote ou imediatamente abaixo de ‘classes’

Atualmente está assim[correto]:
/WEB-INF/classes/nomepacote/classes de servlets

Obrigado a todos.

A

Abaixo de classes. Mas depois de fazer o build, deve gerar as pastas que representam os pacotes.

No seu projeto, fica assim:
WebContent

  • WEB-INF
    • classes

Se você usa o Eclipse, direciona o bin pra esse cara. Ele vai gerar sozinho a pasta do pacote e vai colocar o class dentro. Veja no log do Tomcat o que aparece.

Criado 14 de maio de 2011
Ultima resposta 17 de mai. de 2011
Respostas 15
Participantes 6