0 votos

Buen dia!, estoy realizando una aplicacion web en java (Netbeans) y tengo tanto back-end y front-end en el mismo proyecto puesto que se va a utilzar en una red local, tengo el formulario de logueo en JSP y hago las validaciones en javascript, luego hago la peticion ajax al servlet para el logueo y aunque hace la consulta y devuelve un valor true, no me esta redireccionando a la otra pagina que seria el acceso.
 

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
    <head>
        <meta charset="utf-8">

        <title>Login</title>
    </head>

    <body>
        <section>
            <form method="post">
                <h4>Ingresar</h4>
                <p>Entrar y acceder a su cuenta</p>

                <input type="text" placeholder="Usuario" id="UserSignIn" name="UserSignIn" />
                <input type="password" placeholder="Password" id="PassSignIn" name="PassSignIn" />
                <a href="#"><small>Olvido su contraseña?</small></a>
                <button type="button" id="ingresar">Ingresar</button>
            </form>
        </section>
        
        <script src="style_js/js/lib/jquery-1.10.2.min.js"></script>
        <script src="style_js/js/index.js"></script>

    </body>
</html>



********************** JAVASCRIPT *******************************
 

(function (document, window, $, undefined){
    (function (){
        return index = {
            $txtUser: $("#UserSignIn"),
            $txtPass: $("#PassSignIn"),
            $btnIngresar: $("#ingresar"),
            $modalMensaje: $("#myModal"),
            $tituloMensaje: $("#myModalLabel"),
            $cuerpoMensaje: $("#cuerpoMensaje"),  
            
            init: function (){
                this.consultarUsuario();
            },
            
            consultarUsuario: function (){
                var self = this;
                
                self.$btnIngresar.on("click", function (e) {
                    e.preventDefault();
                                        
                    $.post( "ServletLogin",
                        {
                            UserSignIn: self.$txtUser.val(),
                            PassSignIn: self.$txtPass.val()
                        });
                });
            }
        };
    })();    
    index.init();

})(document, window, jQuery);



************************************* JAVA ************************************

 

package com.co.ten.controller;

import com.co.ten.JPAcontroller.UsuariosJpaController;
import com.co.ten.entities.Usuarios;
import com.co.ten.util.JPAfactory;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class ServletLogin extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        HttpSession session = request.getSession(true);
        
        RequestDispatcher rd = null;
        
        String codUsuario = request.getParameter("UserSignIn");
        String passUsuario  = request.getParameter("PassSignIn");
        
        UsuariosJpaController ujc = new UsuariosJpaController(JPAfactory.getFACTORY());
        Usuarios user = ujc.findUsuariosByCodAndPass(codUsuario, passUsuario);
        
        if(user != null) {
            rd = request.getRequestDispatcher("/dashboard/menu.jsp");
            session.setAttribute("USER", user);
        } else {
            rd = request.getRequestDispatcher("/error.jsp");
            session.setAttribute("USER", null);
        }
        
        rd.forward(request, response);
        
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

 

por en Front-end

1 Respuesta

0 votos

La gracia del AJAX es justo esa, que no re-direcciona, sino que mantiene en la propia página web para que el usuario pueda seguir utilizándola mientras carga algo en segundo plano. Cuando recibas la respuesta por POST (veo que estás utilizando JQUERY) correctamente, en el momento de recibir el "OK" del Servidor tendrás que llamar directamente a la siguiente página web:

location.href='http://www.pagina-que-quiero-abrir.com';

O para abrir una nueva pestaña:

window.open("http://www.pagina-que-quiero-abrir.com");
por