java - requestDispatcher.forward() 不打开新的html页面

标签 java html ajax servlets

我正在使用 JAVA Servlet 开发网络应用程序。我正在尝试制作一个登录表单,我只想让用户设置用户名和密码,如果有效,则打开 mainPage.html 代码运行时没有错误或异常,但是当此函数运行 requestDispatcher.forward() 时,页面会重新加载,而不转发到 mainPage.html

这是验证函数:

    public static boolean validate(String name,String pass){ 

    boolean status=false;  
    try{  
    Class.forName("com.mysql.jdbc.Driver");  
    Connection con=(Connection) DriverManager.getConnection(  
    "jdbc:mysql://localhost:3309/project","root","123456");  

    java.sql.PreparedStatement ps=con.prepareStatement(  
    "select * from user where username=? and password=?");  
    ps.setString(1,name);  
    ps.setString(2,pass);  

    ResultSet rs=ps.executeQuery();  
    status=rs.next();  

    }catch(Exception e){System.out.println(e);}  
    return status;  
    }

这是登录功能:

public static void Login(HttpServletRequest request, HttpServletResponse response) {
    String userName= request.getParameter("username");
    String password =request.getParameter("password");
    if(UserDao.validate(userName, password)){  
        RequestDispatcher requestDispatcher=request.getRequestDispatcher("mainPage.html");  
        try {
            requestDispatcher.forward(request,response);
         /*I already debug the code , it run requestDispatcher.forward(request,response); without any exceptions but nothing happens the html page only refreshing ,not opening mainPage.html*/
        } catch (ServletException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
    }  
    else{  
        System.out.print("Sorry username or password error");  
        RequestDispatcher rd=request.getRequestDispatcher("http://localhost:8080/project");  
        try {
            rd.include(request,response);
        } catch (ServletException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
    }  
}

在 Controller (servlet)中从ajax获取请求:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
   if (action.contentEquals("Login")) 
        UserBusiness.Login(request, response);
    }

ajax 调用:

function Login() {
var username = $('#username').val();
var password = $('#password').val();
$.ajax({
    url: 'Controller',
    data : {
        action: 'Login',
        username: username,
        password: password,
    },
    type: 'post',
    success: function(response) {

    },
    error: function(e) {
        alert('error');
    }
});
}

登录html页面:

        <script>   
    $(document).ready(function () {
        //  loadJsFile("scripts/user-page.js");
        $('#login_btn').on('click', function(){



    Login();
        });
    });
</script>
    <form class="sign-in-htm" method="GET" >
      <div class="group">
        <label for="user" class="label">Username</label>
        <input id="username" name="username" type="text" class="input">
      </div>
      <div class="group">
        <label for="pass" class="label">Password</label>
        <input id="password" name="password" type="password" class="input" data-type="password">
      </div>
      <div class="group">
        <input id="check" type="checkbox" class="check" checked>
        <label for="check"><span class="icon"></span> Keep me Signed in</label>
      </div>
      <div class="group">
        <input type="submit" id="login_btn" class="button" value="Sign In">
      </div>
      <div class="hr"></div>
      <div class="foot-lnk">
        <a href="#forgot">Forgot Password?</a>
      </div>
    </form>

最佳答案

您正在执行 AJAX 请求,但您没有对 AJAX 请求的响应执行任何操作。

为什么不尝试删除 login_btn 的“点击”操作,并测试简单的表单提交是否有效?

关于java - requestDispatcher.forward() 不打开新的html页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60412910/

相关文章:

java - Spring security 在 PreAuthorize 中使用 hasPermission,仅使用一个参数

java - Freemarker - 如何访问传入的数组中的值?

java - 使用基本 Java 应用程序的 Mac OSX El Capitan 上的 ElasticSearch path.home 异常

javascript - 可点击的表格单元格 - 基于单元格内容的不同下拉列表

javascript - angular.translate 在 HTML 的 <br> 上下文中不起作用

ajax - 如何保存 2 个相关的 selectOneMenu 值

java - 如何使用 MOXy Dynamic JAXB 查找是否需要 XSD 元素?

html - 在父项悬停时设置多个子项的样式

每次追加都会更新 Javascript、JSP 输入值

c# - IE 11 打开旧的覆盖的 PDF 而不是新的 PDF?