Erro Exception, o que deve ser

Sou novato em JAVA, estou lendo o livro java como Programar dos Deitel.

No capulitulo de servlets, eu acompanhei todos, mas quando chegou no último servlet que é com banco de dados esta dando erro o que pode ser:

Arquivo web.xml

[code]<?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 xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://ww.w3.org/2001/XMLSchema-instace"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/wep-app_2_4.xsd"
version="2.4">
<!-- Meu primeiro Servlet–>
<display-name>
Programando com Java
Utilizando Servlet
</display-name>

<description>
Demostração do uso do Java através de Servlet
</description>

<!-- Definições do meu primeiro servelet -->
<servlet>
<servlet-name>welcome1</servlet-name>
<descripton>Servelet que processa HTTP get request</descripton>
<servlet-class>WelcomeServlet</servlet-class>
</servlet>

<!-- Localização do meu Servlet -->
<servlet-mapping>
<servlet-name>welcome1</servlet-name>
<url-pattern>/welcome1</url-pattern>
</servlet-mapping>
<!-- fim do primeiro–>

<!-- Definições do meu segundo servelet -->
<servlet>
<servlet-name>welcome2</servlet-name>
<descripton>Servelet que processa HTTP get request com parametros</descripton>
<servlet-class>WelcomeServlet2</servlet-class>
</servlet>

<!-- Localização do meu Servlet -->
<servlet-mapping>
<servlet-name>welcome2</servlet-name>
<url-pattern>/welcome2</url-pattern>
</servlet-mapping>
<!-- fim do segundo–>

<!-- Definições do meu terceiro servelet -->
<servlet>
<servlet-name>welcome3</servlet-name>
<descripton>Servelet que processa HTTP post request com parametros</descripton>
<servlet-class>WelcomeServlet3</servlet-class>
</servlet>

<!-- Localização do meu Servlet -->
<servlet-mapping>
<servlet-name>welcome3</servlet-name>
<url-pattern>/welcome3</url-pattern>
</servlet-mapping>
<!-- fim do terceiro–>

<!-- Definições do meu terceiro servelet -->
<servlet>
<servlet-name>redirect</servlet-name>
<descripton>Servelet que redireciona de acordo com o parametro fornecido</descripton>
<servlet-class>RedirectServlet</servlet-class>
</servlet>

<!-- Localização do meu Servlet -->
<servlet-mapping>
<servlet-name>redirect</servlet-name>
<url-pattern>/redirect</url-pattern>
</servlet-mapping>
<!-- fim do terceiro–>

<!-- Definições do meu terceiro servelet -->
<servlet>
<servlet-name>animalsurvey</servlet-name>
<descripton>Servelet calcula os votos e exibe na tela.</descripton>
<servlet-class>com.deitel.jhtp6.servlets.SurveyServlet</servlet-class>
</servlet>

<init-param>
<param-name>databaseDriver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</init-param>

<init-param>
<param-name>databaseName</param-name>
<param-value>jdbc:mysql://localhost:3306/bancodedados</param-value>
</init-param>

<init-param>
<param-name>username</param-name>
<param-value>root</param-value>
</init-param>

<init-param>
<param-name>password</param-name>
<param-value>root</param-value>
</init-param>

<!-- Localização do meu Servlet -->
<servlet-mapping>
<servlet-name>animalsurvey</servlet-name>
<url-pattern>/animalsurvey</url-pattern>
</servlet-mapping>
<!-- fim do terceiro–>

</web-app>[/code]

Formulário que passa a opção marcada para o servlet

&lt;form method = &quot;post&quot; action = &quot;/Serve/animalsurvey&quot;&gt; &lt;p&gt;Qual seu animal favorito ?&lt;/p&gt; &lt;p&gt; &lt;input type = &quot;radio&quot; name = &quot;animal&quot; value = &quot;1&quot; /&gt; Cachorro&lt;br /&gt; &lt;input type = &quot;radio&quot; name = &quot;animal&quot; value = &quot;2&quot; /&gt; Gato &lt;br /&gt; &lt;input type = &quot;radio&quot; name = &quot;animal&quot; value = &quot;3&quot; /&gt; Passarinho &lt;br /&gt; &lt;input type = &quot;radio&quot; name = &quot;animal&quot; value = &quot;4&quot; /&gt; Serpente&lt;br /&gt; &lt;input type = &quot;radio&quot; name = &quot;animal&quot; value = &quot;5&quot; checked = &quot;checked&quot; /&gt; Nenhum &lt;/p&gt; &lt;p&gt;&lt;input type = &quot;submit&quot; value = &quot;Votar&quot; /&gt; &lt;/p&gt; &lt;/form&gt;

classe SurveyServlet

[code]package com.deitel.jhtp6.servlets;

import java.io.PrintWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SurveyServlet extends HttpServlet
{
private Connection connection;
private Statement statement;

// configura a conexão de banco de dados e cria a instrução SQL
public void init( ServletConfig config ) throws ServletException
{
// tenta uma conexão ao banco de dados e cria instruções
try
{
Class.forName( config.getInitParameter( "databaseDriver" ) );
connection = DriverManager.getConnection(
config.getInitParameter( "databaseName" ),
config.getInitParameter( "username" ),
config.getInitParameter( "password" ) );

     // cria Statement para consultar banco de dados
     statement = connection.createStatement&#40;&#41;;
  &#125; // fim do try
  // para qualquer exceção lança uma UnavailableException para
  // indicar que o servlet não está atualmente disponível
  catch &#40; Exception exception &#41; 
  &#123;
     exception.printStackTrace&#40;&#41;;
     throw new UnavailableException&#40;exception.getMessage&#40;&#41;&#41;;
  &#125; // fim do catch

} // fim do método init

// processa as respostas da pesquisa
protected void doPost( HttpServletRequest request,
HttpServletResponse response )
throws ServletException, IOException
{
// configura as respostas para o cliente
response.setContentType( "text/html" );
PrintWriter out = response.getWriter();

  // inicia o documento XHTML                    
  out.println&#40; &quot;&lt;?xml version = \&quot;1.0\&quot;?&gt;&quot; &#41;;

  out.printf&#40; &quot;%s%s%s&quot;, &quot;&lt;!DOCTYPE html PUBLIC&quot;, 
     &quot; \&quot;-//W3C//DTD XHTML 1.0 Strict//EM\&quot;&quot;,
     &quot; \&quot;http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\&quot;&gt;\n&quot; &#41;;

  out.println&#40; 
     &quot;&lt;html xmlns = \&quot;http&#58;//www.w3.org/1999/xhtml\&quot;&gt;&quot; &#41;;

  // seção da cabeça do documento
  out.println&#40; &quot;&lt;head&gt;&quot; &#41;;  
  
  // lê a resposta da pesquisa atual
  int value = 
     Integer.parseInt&#40; request.getParameter&#40; &quot;animal&quot; &#41; &#41;;
  String sql;

  // tenta processar um voto e exibe os resultados atuais
  try 
  &#123;
     // atualiza o total para as respostas atuais da pesquisa
     sql = &quot;UPDATE surveyresults SET votes = votes + 1 &quot; +
           &quot;WHERE id = &quot; + value;
     statement.executeUpdate&#40; sql &#41;;

     // obtém o total de todas as respostas da pesquisa
     sql = &quot;SELECT sum&#40; votes &#41; FROM surveyresults&quot;;
     ResultSet totalRS = statement.executeQuery&#40; sql &#41;;
     totalRS.next&#40;&#41;; // posição para o primeiro registro
     int total = totalRS.getInt&#40; 1 &#41;;

     // obtém os resultados
     sql = &quot;SELECT surveyoption, votes, id FROM surveyresults &quot; + 
        &quot;ORDER BY id&quot;;
     ResultSet resultsRS = statement.executeQuery&#40; sql &#41;;
     out.println&#40; &quot;&lt;title&gt;Thank you!&lt;/title&gt;&quot; &#41;;
     out.println&#40; &quot;&lt;/head&gt;&quot; &#41;;  
     
     out.println&#40; &quot;&lt;body&gt;&quot; &#41;;  
     out.println&#40; &quot;&lt;p&gt;Thank you for participating.&quot; &#41;;
     out.println&#40; &quot;&lt;br /&gt;Results&#58;&lt;/p&gt;&lt;pre&gt;&quot; &#41;;
     
     // processa os resultados
     int votes;
     
     while &#40;resultsRS.next&#40;&#41;&#41; 
     &#123;
        out.print&#40;resultsRS.getString&#40; 1 &#41;&#41;;
        out.print&#40; &quot;&#58; &quot; &#41;;
        votes = resultsRS.getInt&#40; 2 &#41;;
        out.printf&#40; &quot;%.2f&quot;, &#40; double &#41; votes / total * 100 &#41;;
        out.print&#40; &quot;%  responses&#58; &quot; &#41;;
        out.println&#40; votes &#41;;
     &#125; // fim do while

     resultsRS.close&#40;&#41;;
     
     out.print&#40; &quot;Total responses&#58; &quot; &#41;;
     out.print&#40; total &#41;;
     
     // fim do documento XHTML
     out.println&#40; &quot;&lt;/pre&gt;&lt;/body&gt;&lt;/html&gt;&quot; &#41;;         
     out.close&#40;&#41;;
  &#125; // fim do try
  // se ocorrer uma exceção de banco de dados, retorna a página de erro
  catch &#40; SQLException sqlException &#41; 
  &#123;
     sqlException.printStackTrace&#40;&#41;;
     out.println&#40; &quot;&lt;title&gt;Error&lt;/title&gt;&quot; &#41;;
     out.println&#40; &quot;&lt;/head&gt;&quot; &#41;;  
     out.println&#40; &quot;&lt;body&gt;&lt;p&gt;Database error occurred. &quot; &#41;;
     out.println&#40; &quot;Try again later.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&quot; &#41;;
     out.close&#40;&#41;;
  &#125; // fim do catch

} // fim do método doPost

// fecha instruções de SQL e banco de dados quando servlet termina
public void destroy()
{
// tenta fechar instruções e conexão do banco de dados
try
{
statement.close();
connection.close();
} // fim do try
// trata exceções de banco de dados retornando um erro ao cliente
catch ( SQLException sqlException )
{
sqlException.printStackTrace();
} // fim do catch
} // fim do método destroy
} // fim da classe SurveyServlet[/code]

Estrutura de Diretórios

WEB-INF Classes com deitel jhtp6 servlets lib

Erro:

[code]type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Error allocating a servlet instance
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
java.lang.Thread.run(Unknown Source)

root cause

java.lang.NoClassDefFoundError: IllegalName: com/deitel/jhtp6/servlets/SurveyServlet
java.lang.ClassLoader.preDefineClass(Unknown Source)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1812)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:866)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1319)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
java.lang.Thread.run(Unknown Source)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.[/code]

opa blz?

bom pelo que eu verifiquei, no seu web.xml
me parece ter parametros repetidos…

pela descrição do erro você verificou se o compilado .class
está no endereço correto?

verifique se está lá, me parece que não encontrou a classe e com isso
não conseguiu carregar o servlet :roll:

[]´s

Isso aí tá com cara de exception na hora de startar o servidor…
Veja se o servidor inicializou corretamente! Esse tipo de coisa pode acontecer ou por erros na aplicação (web.xml por exemplo) ou por má instalação do servidor…