formulário não acha servlet

15 respostas
M

bom gente, olá a todos. estou tentando fazer com que um formulário dispare a execução de um servlet. Tenho vários outros formulários que fazem a mesma coisa, mas eles não dão erro só esse que vou mostrar para vocês.

Servlet:
package controller;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;
import model.Aluno;
import model.Funcionario;
import model.Professor;
import model.Usuario;
import model.dao.AlunoDAO;
import model.dao.FuncionarioDAO;
import model.dao.ProfessorDAO;

public class ContCadastroServlet extends HttpServlet {

    protected void contCadastro(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            
             //obtem as informações inseridas no formulário
             String matricula = request.getParameter("matricula");
             String nome = request.getParameter("nome");
             String cpfs = request.getParameter("cpf");
             String senha = request.getParameter("senha");
             String outraSenha = request.getParameter("outraSenha");
             String news = request.getParameter("newsletter");
             
             //converção para inteiro
             int cpf = Integer.parseInt(cpfs); 
             int newsletter = Integer.parseInt(news);
             
             
             //verifica se as senhas inseridas pelo usuário são iguais
             if ( senha.equals(outraSenha) )
             {
                 //termina o cadastro do aluno
                 if (matricula.equals("ALU"))
                 {
                     //executa o segundo cadastro
                     Aluno alu = AlunoDAO.ContCadAluno(matricula, nome, cpf, senha, newsletter);
                     
                     //verifica se o cadastro foi realizado com sucesso ou não
                     if ( alu != null )
                     {
                         JOptionPane.showMessageDialog( null, "Cadastro realizado com sucesso!" );
                     }else
                     {
                         JOptionPane.showMessageDialog( null, "Não foi possível realizar o seu cadastro, por favor tente mais tarde!" );
                         response.sendRedirect("index.jsp");
                     }
                     
                 //termina o cadastro do professor   
                 }else if ( matricula.equals("PRO") )
                 {
                     Professor prof = ProfessorDAO.contCadProfessor(matricula, nome, cpf, senha, newsletter);
                     
                     //verifica se o cadastro foi realizado com sucesso ou não
                     if ( prof != null )
                     {
                         JOptionPane.showMessageDialog( null, "Cadastro realizado com sucesso!" );
                     }else
                     {
                         JOptionPane.showMessageDialog( null, "Não foi possível realizar o seu cadastro, por favor tente mais tarde!" );
                         response.sendRedirect("index.jsp");
                     }
                     
                 //termina o cadastro do funcionario    
                 }else if ( matricula.equals( "FUN" ) )
                 {
                     Funcionario func = FuncionarioDAO.contCadFuncionario(matricula, nome, cpf, senha, newsletter);
                     
                     //verifica se o cadastro foi realizado com sucesso ou não
                     if ( func != null )
                     {
                         JOptionPane.showMessageDialog( null, "Cadastro realizado com sucesso!" );
                         response.sendRedirect("indexAdmin.jsp");
                     }else
                     {
                         JOptionPane.showMessageDialog( null, "Não foi possível realizar o seu cadastro, por favor tente mais tarde!" );
                         response.sendRedirect("index.jsp");
                     }
                 }
             }else
             {
                 JOptionPane.showMessageDialog(null, "As senhas inseridas não são iguais.");
                 response.sendRedirect("cadastroAluno.jsp");
             }
                 
        }catch ( Exception e )
        {
            JOptionPane.showMessageDialog(null, "Erro no cadastro, por favor tente mais tarde!");
            e.printStackTrace();
        }finally {            
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        contCadastro(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        contCadastro(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}

formulário:

<form id="cadastroAluno" name="cadastroAluno" action="ContCadastroServlet" method="post"> 
			<th valign="top">Nome completo:</th>
			<td>
            		<!--NOME -->
                                
                    <input type="text" class="inp-form" name="nome"/></td>
			<td></td>
		</tr>
				<tr>
			<th valign="top">Matrícula:</th>
			<td>
            		
                    <input type="text" class="inp-form" name="matricula" /></td>
			<td></td>
		</tr>
        		<tr>
			<th valign="top">CPF:</th>
			<td>
            		
                    <input type="text" class="inp-form" name="cpf" /></td>
			<td></td>
		</tr>

			<th valign="top">Redefinir senha:</th>
			<td>
            <input type="text" class="inp-form-error" name="senha"/></td>
			<td>
			<div class="error-left"></div>
			<div class="error-inner">Mín. 8 Máx. 20 Caracteres</div>
            			<td></td>
		</tr>
               		<tr>
			<th valign="top">Repetir senha:</th>
			<td>
            		
                    <input type="text" class="inp-form" name="outraSenha"/></td>
			<td></td>
		</tr>
		<tr>
		<th valign="top">Newsletter:</th>
		<td>	
                    <p>
                      <!-- ESCOLHER CATEGORIA -->
                      <input name="Receber atualizações no email cadastrado" type="checkbox" value="atualizacoes" checked /> 
                      </p>
                    <p>Receber atualizações para o email cadastrado </p></td>
		<td></td>
		</tr>

	<tr>
		<th>&nbsp;</th>
		<td valign="top">
        <!-- BOTAO ENVIAR -->
        <input type="submit" value="" class="form-avancar"/>
            <!-- BOTAO RESETAR -->
			<input type="reset" value="" class="form-reset"  />
                        </form>
Na minha IDE (netbeans), não dispara exception nenhuma, mas o tomcat fala que o ContCadastroServlet (servlet mostrado), não está avaliado.

segue ai o print do erro:

[img]https://dl-web.dropbox.com/get/erro_tomcat.png?w=f902922f[/img]

Espero que você possam me ajudar, desde já mito grato! :)

15 Respostas

H

Você adicionou a Servlet no seu web.xml?

Abs,

P

Verifique a sua referencia no web.xml

&lt;servlet-mapping&gt;
		&lt;servlet-name&gt;SeuServlet&lt;/servlet-name&gt;
		&lt;url-pattern&gt;/ContCadastroServlet&lt;/url-pattern&gt;
	&lt;/servlet-mapping&gt;

Falow

M

pow gente, eu andei o olhando o web.xml, e está tudo certinho, eu acho:

<servlet> <servlet-name>ContCadastro</servlet-name> <servlet-class>controller.ContCadastroServlet</servlet-class> </servlet>

<servlet-mapping> <servlet-name>ContCadastro</servlet-name> <url-pattern>/ContCadastro</url-pattern> </servlet-mapping>

P

Coloque a barra no seu form html action="/SeuServlet"
Fallow

M

Aqui está o topo do meu form:

<form id="cadastroAluno" name="cadastroAluno" action="ContCadastroServlet" method="post">
R
@WebServlet

deixa o descritor mais limpo.

[]

H

Faça como amigo disse e coloque assim:

&lt;form id="cadastroAluno" name="cadastroAluno" action="/ContCadastroServlet" method="post"&gt;
P

ajuste para

&lt;form id="cadastroAluno" name="cadastroAluno" action="/ContCadastroServlet" method="post"&gt;

fallow

M

ajuste para
view plaincopy to clipboardprint?

fallow

Pow cara, eu fiz isso e continuou a mesma coisa.

R

mostra seu web.xml

M

web.xml completa:

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>ConfirmarEmailCadasdroServlet</servlet-name> <servlet-class>controller.RegistroServlet</servlet-class> </servlet> <servlet> <servlet-name>RegistroServlet</servlet-name> <servlet-class>controller.RegistroServlet</servlet-class> </servlet> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>controller.LoginServlet</servlet-class> </servlet> <servlet> <servlet-name>GerenciamentoServlet</servlet-name> <servlet-class>controller.GerenciamentoServlet</servlet-class> </servlet> <servlet> <servlet-name>ContCadastro</servlet-name> <servlet-class>controller.ContCadastroServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ConfirmarEmailCadasdroServlet</servlet-name> <url-pattern>/ConfirmarEmailCadasdroServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>RegistroServlet</servlet-name> <url-pattern>/RegistroServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>GerenciamentoServlet</servlet-name> <url-pattern>/GerenciamentoServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ContCadastro</servlet-name> <url-pattern>/ContCadastro</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

R

faz um teste, chama seu servlet direto do browser tipo

http://host:port/context-root[/url-pattern]

no meu caso:
localhost:8080/appweb/ContCadastroServlet

e ve se ele chega na sua servlet.

Verifica os nomes das classes.

R
<form id="cadastroAluno" name="cadastroAluno" action="/ContCadastro" method="post">
R

segue uma dica:

mapeando servlet

isto aqui é para dar um nome a sua servlet para o descritor(web.xml) poder achar o mapeamento dele e aqui vc informa qual a classe vai responder a requisição

<servlet>  
        <servlet-name>ContCadastro</servlet-name>  
        <servlet-class>controller.ContCadastroServlet</servlet-class>  
    </servlet>

isto aqui ele junta o nome que vc usou para mapear a servlet com a url que sua aplicação vai utilizar para poder achar a servlet. OK

<servlet-mapping>  
        <servlet-name>ContCadastro</servlet-name>  
        <url-pattern>/ContCadastro</url-pattern>  
    </servlet-mapping>
M

egue uma dica:

mapeando servlet

isto aqui é para dar um nome a sua servlet para o descritor(web.xml) poder achar o mapeamento dele e aqui vc informa qual a classe vai responder a requisição
view plaincopy to clipboardprint?

<servlet> <servlet-name>ContCadastro</servlet-name> <servlet-class>controller.ContCadastroServlet</servlet-class> </servlet>

isto aqui ele junta o nome que vc usou para mapear a servlet com a url que sua aplicação vai utilizar para poder achar a servlet. OK
view plaincopy to clipboardprint?

<servlet-mapping> <servlet-name>ContCadastro</servlet-name> <url-pattern>/ContCadastro</url-pattern> </servlet-mapping>

mas rjbcordeiro, está exatamente assim no meu web.xml

Criado 22 de julho de 2011
Ultima resposta 22 de jul. de 2011
Respostas 15
Participantes 4