gpt4 book ai didi

java - 登录重定向错误

转载 作者:行者123 更新时间:2023-12-01 13:27:44 24 4
gpt4 key购买 nike

我正在构建一个 Web 应用程序,我有一个登录 jsp 表单,它将被重定向到 servlet...

我的servlet代码:

Login login=new Login();
login.setUserName(request.getParameter("txtUsername"));
login.setPassWord(request.getParameter("txtPassword"));

LoginService ls=new LoginService();
ls.loginValidate(login);
RequestDispatcher rd=request.getRequestDispatcher("/Login.jsp");
rd.forward(request, response);
}

以及他们的服务类别:

我的服务类代码:

public class LoginService {
Login login=null;

public Login loginValidate(Login login) {
validateLogin(login);
return login;
}

private void validateLogin(Login login) {
this.login=login;
if(login!=null){
LoginDAO ld=new LoginDAO();
DataSource dataSource=new DataSource();
ld.setDataSource(dataSource);
ld.validate(login);

}
}
}


}

从他们到 DAO

我的LoginDAO:

public class LoginDAO {
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}

public boolean validate(Login login){
boolean status=true;
String sql="select * from Login where UserName=? and PassWord=?";

Connection conn = null;
try{
conn = dataSource.createConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,login.getUserName());
ps.setString(2,login.getPassWord());
ResultSet rs=ps.executeQuery();
status=rs.next();
}

catch (SQLException e) {
throw new RuntimeException(e);

} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {}
}
}
return status;
}
}

当我输入正确的用户名和密码时,它会重定向到成功页面(在此上下文中为 Login.jsp),即使我输入错误的 un 和 pw 其重定向,我也明白为什么,因为在 servlet 中的方法调用之后,我已将其分派(dispatch)到login.jsp 因此在任何情况下它都会将我重定向到成功页面。如何解决这个问题...需要帮助..提前致谢...

最佳答案

对于 LoginDAO 中的验证方法,如果表中不存在用户名和密码,它将返回一个空结果集。根据结果​​集是否为空返回 boolean 值给Servlet。

public  boolean validate(Login login)
{
boolean status=true;
...
...
...
ResultSet rs=ps.executeQuery();

if (!rs.next()){
status=false;
}

return status;

}

在 servlet 中,您可以获取参数中的返回值,并根据其值将其重定向到适当的成功或错误页面

Boolean check=ls.loginValidate(login);

if(check==true)
{
RequestDispatcher rd=request.getRequestDispatcher("/Login.jsp");
rd.forward(request, response);
}
else
{
RequestDispatcher rd=request.getRequestDispatcher("/error.jsp");
rd.forward(request, response);
}

LoginService 类只能有 1 个方法 loginValidate,该方法应返回 boolean 值

public boolean loginValidate(Login login) {

Boolean check=false;

if(login!=null){
LoginDAO ld=new LoginDAO();
DataSource dataSource=new DataSource();
ld.setDataSource(dataSource);
check=ld.validate(login);
}
return check;
}

关于java - 登录重定向错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21722372/

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