gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:13:46 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com