Erro na chamada do Servlet [RESOLVIDO]

Boa tarde pessoal.

Estou desenvolvendo uma aplicação com Captcha que é feita com Servlet. Porém quando tento clicar no botão enviar da minha aplicação, que é onde deveria de ser feito a verificação se a imagem é a mesma da digitada, eu encontro o erro:



HTTP Status 404 - /servletController.do
type Status report

message /servletController.do

description The requested resource (/servletController.do) is not available.

Eu creio que o erro seja no meu web.xml, por isso, vou postar ele aqui.

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
  <display-name>Struts Blank Application</display-name>
  
  

  <servlet>
    <servlet-name>Kaptcha</servlet-name>
    <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Kaptcha</servlet-name>
    <url-pattern>/captcha.jpg</url-pattern>
  </servlet-mapping>


<servlet>
	<servlet-name>servletController</servlet-name>
	<servlet-class>ServletController</servlet-class>
	
</servlet>

<servlet-mapping>
	<servlet-name>servletController</servlet-name>
	<url-pattern>/servletController.do</url-pattern>
</servlet-mapping>


  <!-- The Usual Welcome File List -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>


  <!-- Struts Tag Library Descriptors -->
  <taglib>
    <taglib-uri>/tags/struts-bean</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/tags/struts-html</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/tags/struts-logic</taglib-uri>
    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/tags/struts-nested</taglib-uri>
    <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/tags/struts-tiles</taglib-uri>
    <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
  </taglib>

</web-app>
[
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
  <display-name>Struts Blank Application</display-name>
  
  

  <servlet>
    <servlet-name>Kaptcha</servlet-name>
    <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Kaptcha</servlet-name>
    <url-pattern>/captcha.jpg</url-pattern>
  </servlet-mapping>


<servlet>
	<servlet-name>servletController</servlet-name>
	<servlet-class>ServletController</servlet-class>
	
</servlet>

<servlet-mapping>
	<servlet-name>servletController</servlet-name>
	<url-pattern>/servletController.do</url-pattern>
</servlet-mapping>


  <!-- The Usual Welcome File List -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>


  <!-- Struts Tag Library Descriptors -->
  <taglib>
    <taglib-uri>/tags/struts-bean</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/tags/struts-html</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/tags/struts-logic</taglib-uri>
    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/tags/struts-nested</taglib-uri>
    <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/tags/struts-tiles</taglib-uri>
    <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
  </taglib>

</web-app>

E o meu jsp que faz a chamada é esse


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="/servletController.do">
<table>
	<tr>
		<td>Usuário:</td>
		<td><input type="text" name="usuario" /></td>
	</tr>
	<tr>
		<td>Senha:</td>
		<td><input type="password" name="senha" /></td>
	</tr>
	<tr>
		<td>Código da imagem:</td>
		<td><input type="text" name="captcha" /></td>
	</tr>
</table>
<img ><br />
&lt;input type="submit" value="Enviar" /&gt;&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;

Se alguém puder me auxiliar, ficarei muito grata!!!

[quote=dsystem]&lt;servlet&gt; &lt;servlet-name&gt;servletController&lt;/servlet-name&gt; &lt;servlet-class&gt;ServletController&lt;/servlet-class&gt; &lt;/servlet&gt; [/quote]

a classe ServletController não está dentro de algum pacote?

Wbdsjunior, em primeiro lugar, obrigada por responder…

Então, os meus diretórios estão assim


Captcha
     ---- META-INF
     ---- pages
     ---- src
           --- FiltroKaptcha.java
           --- ServletController.java
     ---- WEB-INF
           --- classes
               --- java
           --- web.xml
     ---- index.jsp
   

Ou seja, pelo que eu entendi, deveria colocar


&lt;servlet&gt;  
    &lt;servlet-name&gt;servletController&lt;/servlet-name&gt;  
    &lt;servlet-class&gt;src.ServletController&lt;/servlet-class&gt;  
&lt;/servlet&gt;

Mas quando coloco assim, aí aparece a seguinte mensagem:

HTTP Status 404 - Servlet servletController is not available
type Status report

message Servlet servletController is not available

description The requested resource (Servlet servletController is not available) is not available.

Que é praticamente a mesma mensagem…

:S

o mapeamento do servlet está correto.

olhando mais atentamente, creio ter descoberto o problema.

repare que quando você executa a servlet, na barra de endereço do navegador, que antes você podeia ver http://localhost:8080/Captcha, agora você deve ver http://localhost:8080/servletController.do.

isso ocorre porque no atributo action do formulário do jsp você colocou uma barra antes da servlet, informado que ela está na raiz do servidor.

tente

&lt;body&gt; &lt;form action="servletController.do"&gt; &lt;!-- sem a barra antes da servlet --&gt;
e diga se funcionou.

Então, fiz a alteração e agora o erro que apareceu é


HTTP Status 404 - Servlet servletController is not available

Uma pergunta, eu andei pesquisando na net e vi que tem que ter o arquivos .class… No meu caso, ele não está gerando… Será que pode ser isso?

[quote=dsystem]Então, fiz a alteração e agora o erro que apareceu é


HTTP Status 404 - Servlet servletController is not available

Uma pergunta, eu andei pesquisando na net e vi que tem que ter o arquivos .class… No meu caso, ele não está gerando… Será que pode ser isso?[/quote]
sim.

como é seu ambiente de desenvolvimento?

versão do jdk, eclispe/netbeans, etc.

wbdsjunior…

Consegui…

Era problema da falta do .class mesmo…

Mas vamos ver se você pode me ajudar cm mais uma coisinha
rsrs

Como eu disse no começo, estou fazendo um projeto de Captcha… E tenho duas classes:

  • ServletController e FiltroKaptcha…

Quando eu executo o meu projeto, ele não entra no meu FiltroKaptcha… Ai fui ver que eu tinha que mapear no web.xml

Foi então que coloquei o seguinte código

&lt;!-- FILTER --&gt;

       &lt;filter&gt;

        &lt;filter-name&gt;FiltroKaptcha&lt;/filter-name&gt;

        &lt;filter-class&gt;FiltroKaptcha&lt;/filter-class&gt;

    &lt;/filter&gt;

    &lt;filter-mapping&gt;

        &lt;filter-name&gt;FiltroKaptcha&lt;/filter-name&gt;

        &lt;url-pattern&gt;/servlet/*&lt;/url-pattern&gt;

    &lt;/filter-mapping&gt;

    &lt;!-- FILTER --&gt;

Mas não deu certo… Coloquei um breakpoint pra vê se ele entra no método, mas não deu certo…Você saberia me ajudar?

Retificando… Resolvido…rsrs

Faltava eu colocar essa linha

&lt;servlet-name&gt;servletController&lt;/servlet-name&gt;

Dentro do <filter-mapping>

Obrigada por toda ajuda :wink: