Olá
Estou com problemas quando vou acessar a Servlet via AJAX, ele diz não encontrar o script, segue os códigos que correspondem para o funcionamento da mesma. O erro que acontece é o seguinte :
jquery-1.10.3.js:4 POST http://localhost:8082/agendaContato/CadastroContato 404 ()
The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
OBS: A aplicação está rodando normal, porém quando vou inserir um registro, que faço a utilização do código ajax com a URL pra Servlet, ele acontece o erro e cai no bloco catch
package br.com.agendaContato.servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.agendaContato.objetos.Contato;
import java.sql.Connection;
import br.com.agendaContato.bd.conexao.Conexao;
import br.com.agendaContato.jdbc.JDBCContatoDAO;
import java.util.HashMap;
import java.util.Map;
import com.google.gson.Gson;
public class CadastroContato extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CadastroContato(){
super();
}
private void process(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
/*
* Instanciar o objeto contato para a classe Contato
* pois é nesta que armazenaremos os valores dos campos do
* formulário contato que posteriormente serão gravados no banco
* de dados
*/
Contato contato = new Contato();
try{
/*
* Recebendo os valores dos campos do formulário e os armazenando
* em seus respectivos atributos na classe Contato
*/
contato.setNome(request.getParameter("txtnome"));
contato.setEndereco(request.getParameter("txtendereco"));
contato.setTelefone(request.getParameter("txttelefone"));
/*
* Instancia a classe Conexao ao objeto conec visando
* estabelecer a conexao com o banco de dados contato
*/
Conexao conec = new Conexao();
// Abrindo a conexão com o banco de dados
Connection conexao = conec.abrirConexao();
/*
* Instanciar a classe JDBCContatoDAO ao objeto
* jdbcContato visando a implementação da transação
* implementar as transações de inserção edição
* exclusão e consulta ao banco de dados contatos.
*/
JDBCContatoDAO jdbcContato = new JDBCContatoDAO(conexao);
/*
* Chamar o método, inserir da interface ContatoDAO,
* passando como parâmetro o objeto contato que, por sua vez,
* contém os valores dos campos a serem inseridos na tabela
* contato. Recebe e armazena do método inserir da classe JDBCCONTATODAO,
* o resultado da inserção, verdadeiro ou falso
* ou seja, conseguiu ou não inserir. Este resultado é armazenado na variavel
* retorno
*/
boolean retorno = jdbcContato.inserir(contato);
// Fechar conexao com o banco de dados
conec.fecharConexao();
// Para retornar uma mensagem para o usuario
Map<String, String> msg = new HashMap<String, String>();
if(retorno){
msg.put("msg","Contato cadastrado com sucesso.");
}else{
msg.put("msg","Não foi possivel cadastrar o contato.");
}
/*
* Retorna a resposta(mensagem) para o usuário a partir do Json
*/
String json = new Gson().toJson(msg);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}catch(IOException e){
e.printStackTrace();
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
process(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
process(request, response);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>agendaContato</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<servlet-name>CadastroContato</servlet-name>
<servlet-class>br.com.agendaContato.servlets.CadastroContato</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CadastroContato</servlet-name>
<url-pattern>/CadastroContato</url-pattern>
</servlet-mapping>
</web-app>
SENAI.contato = new Object();
/*
* Rotina JQuery com Ajax que implementa o método cadastrar, fazendo com que
* possamos validar os campos obrigatórios de preenchimento do formulário
* contato e a partir da rotina Ajax, que configura as informações do método
* do formulário contato, no caso "post", identifica o Servlet que receberá
* mensagem que ao receber, do Servlet, o resultado da inclusão de dados via
* JSON, apresentará o resultado da transação.
* Faz a chamada ao método buscar, na tentativa de fazer a atualização na pagina(refresh)
*/
$(document).ready(function(){
SENAI.contato.cadastrar = function(){
if(document.getElementById("nome").value == "" ||
document.getElementById("endereco").value == "" ||
document.getElementById("telefone").value == ""){
alert("Todos os campos são obrigatórios de preenchimento!");
document.getElementById("nome").focus();
return false;
}else{
$.ajax({
type: "POST",
url: "CadastroContato",
data: $("#cadastrarContato").serialize(),
success: function(msg){
var cfg = {
title: "Mensagem",
height: 250,
width: 400,
modal: true,
buttons: {
"OK":function(){
$(this).dialog("close");
}
}
};
$("#msg").html(msg.msg);
$("#msg").dialog(cfg);
// Atualiza a tabela de contatos
SENAI.contato.buscar();
},
error:function(reset){
console.log(reset);
alert("Erro ao cadastrar um novo contato");
}
});
}
};
/*
* Implementação do método buscar que, por sua vez, captura os dados do formulário
* e os armazena na variável valorBusca que, por sua vez, os remete para o Servlet.
* Caso já tenham informações cadastradas, chama o método exibirContatos()
*/
SENAI.contato.buscar = function(){
var valorBuscar = $("#consultarContato").val();
SENAI.contato.exibirContatos(undefined, valorBusca);
}
});