Executar um método de uma classe pelo JSP passando parametros

1 resposta
kvnallen

Pessoal, é o seguinte, tenho uma página JSP onde envio um formulario exemplo : login e senha.

Dai eu fiz um código no javascript onde eu envio esses dados por ajax ao formulário ser submetido, segue o código exemplo:

var parametros = {login: login, senha: senha}
JSON.stringnify(parametros);

$.ajax(function(){

type: POST,

url : 'testeservlet?acao=inserir,

data: parametros,

sucess: function(){

alert(sucesso);

}

});

Eu estava enviando o login e senha para esse servlet onde ele dava um request.getparameter(“variavel”); e pegava os valores, mas não estava conseguindo enviar, então eu tentei mudar para uma classe, mas também não deu certo.

Dentro da classe criei o método inserir(login,senha){} onde ele pegava esses dados por parametros e inseria nas tabelas, mas também não teve como por causa da url, então como eu faria para enviar do Javascript para uma classe ? Pensei em criar um servlet só para instanciar esse método e passar os parametros por la, mas se eu estiver correto, como passo esses parametros do $.ajax para o servlet??

1 Resposta

al.barbosa

O caminho é esse mesmo. Você pode passar os parâmetros da página através do Javascript (JQuery) para o Servlet.

Achei um exemplo no link abaixo:

[url]http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=438[/url]

Só que ele usa $.post.
Fiz um exemplo usando $.ajax:

O formulário html:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
        <script language="javascript" type="text/javascript" src="js/jquery.js"></script>
        <script language="javascript" type="text/javascript" src="js/teste.js"></script>
    </head>
    <body>
        <table>   
        <tr><td>   
        Nome:    
        </td><td>   
            <input id="nome" name="nome" type="text" size="30" />   
        </td></tr>   
        <tr><td>                   
        Senha:    
        </td><td>   
        <input id="senha" name="senha" type="password" size="30" />   
        </td></tr>   
        <tr><td>
        </td></tr>
        </table>   
        <p><input type="button" id="botao_teste" value="Testar" /></p>
        <div id="resultado" class="outputTextArea"></div>
    </body>
</html>

O jQuery:

$(document).ready(function() {
    $("#botao_teste").click(function(){
        $nome = document.getElementById("nome").value;
        $senha = document.getElementById("senha").value;
        $.ajax({
            url : "ServletLogin",
            data : {nome:$nome, senha:$senha, acao:"inserir"},
            method : "POST",
            dataType : "xml",
            success : function(xml) {
                $("#resultado").html(
                    $("valor", xml).text()
                );    
            },
            error : function(xhr, status) {
                alert('Desculpe, aconteceu um problema!');
            },
            complete : function(xhr, status) {
                alert('A requisição está completa!');
            }
        });
    });
});

E o servlet:

@WebServlet(name = "ServletLogin", urlPatterns = {"/ServletLogin"})
public class ServletLogin extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        String nome = request.getParameter("nome");
        String senha = request.getParameter("senha");
        String acao = request.getParameter("acao");
        
        response.setContentType("text/xml");
        PrintWriter out = response.getWriter();
        out.println("<login><valor>" + " o Servlet leu nome: " + 
            nome + " - senha: " + senha + " - acao: " + acao + "</valor></login>");
        out.flush();
        out.close();
    }
// ...
}
Criado 5 de agosto de 2012
Ultima resposta 5 de ago. de 2012
Respostas 1
Participantes 2