Erro ao Chamar um servlet de um HTML

4 respostas
M

Boa noite
Instalei o Tomcat 5 e fiz as configurações que encontrei nos tutoriais da internet que baixei, daí fiz um teste e está funcionando corretamente.
Fiz um Formulário em HTML que após ser preenchido, quando submeto as informações este chama um Servlet que mostra as informações digitadas.
Coloque o Servlet na seguinte estrutura:
|
webapps
|
myApps
|
WEB-INF
|
classes
Coloquei o HTML na seguinte estrutura:
|
webapps
|
myApps
|
formularios
Quando executo o HTML e submeto, recebo a mensagem de que não foi possível localizar o servlet no caminho do HTML.
Como posso configurar o Tomcat para buscar o HTML no local especificado e quando submetê-lo, buscar o servlet no local correto?
Acredito que esteja faltando alguma configuração, mas não sei qual é.
Já acertei o web.xml mapeando meu servlet, mas onde informo o caminho do HTML e de onde deve buscar os servlets quando chamados?
Se puderem me ajudar, agradeço o apoio.

Mariângela

4 Respostas

Rafael_Steil

Como voce esta invocando o servlet pelo html, qual o pacote do servlet e como esta o mapeamento no web.xml?

Rafael

M

Boa noite Rafael
Copiei um exemplo de um livro que estou usando para estudar JSP.
No HTML faço o seguinte:

...
<form method="POST" action="formProcessor">
...
<p><input type="submit" value="Submit"></p>
...

O arquivo web.xml esta assim:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
  <servlet>
     <servlet-name>BasicServlet</servlet-name>
     <servlet-class>BasicServlet</servlet-class>
  </servlet>
  <servlet>
     <servlet-name>BasicFormProcessor</servlet-name>
     <servlet-class>BasicFormProcessor</servlet-class>
  </servlet>
  <servlet-mapping>
     <servlet-name>BasicServlet</servlet-name>
     <url-pattern>/myServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
     <servlet-name>BasicFormProcessor</servlet-name>
     <url-pattern>/formProcessor</url-pattern>
  </servlet-mapping>
</web-app>

E meu mapeamento é o seguinte:

Tomcat5.5
…webapps
…myApps
…jsp – os arquivos jsp ficarão aqui
…arquivos – os arquivos html ficarão aqui
…WEB-INF
…classes – meus servlets (.class) estão aqui

Será que você tem idéia do que ficou faltando?
Mariângela

Rafael_Steil

Solucao 1: adicionar uma barra na frente do noem do servlet no html:

<form method="POST" action="/formProcessor">

porem, somente isso nao basta: voce precisa adiconar o noem do contexto tambem. Algo como

<form method="POST" action="/myApp/formProcessor">

Como nao eh bom deixar tal nome hardcoded, o melhor eh utilizar a

Solucao 2: adicionar uma extensao ao servelt:

<url-pattern>*.fp</url-pattern>

(“fp” de “form processor”.

Ai, o seu html fica assim:

action="formProcessor.fp">

Isso resolve. Apenas note que voce nao pode usar a mesma extensao para diferentes servlets

Se isso nao for viavel para voce, entao vai ser necessario usar a Soluao 1

Rafael

M

Bom dia Rafael
Vou testar as soluções que você propôs e ver se passa, depois te dou um retorno.
Como estou estudando e não acredito que terei muitos servlets, acho que não terei problemas em usar extensões para estes.
Vou deixar anotado para não ter erro da próxima vez que precisar fazer algo parecido.
Obrigada pela força.

Mariângela

Criado 16 de maio de 2005
Ultima resposta 17 de mai. de 2005
Respostas 4
Participantes 2