登录重定向错误

时间:2014-02-12 08:26:24

标签: java spring jsp servlets redirect

我正在构建一个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中调用方法之后我已将它发送到login.jsp所以在任何情况下它都会将我重定向到成功页面。如何解决这个问题...需要帮助..在此先感谢...

2 个答案:

答案 0 :(得分:1)

对于LoginDAO中的验证方法,如果表中没有用户名和密码,它将返回一个空的Resultset。根据结果​​集是否为空,将布尔值返回给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类只能有一个方法loginValidate,它应返回一个布尔值

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;
    }

答案 1 :(得分:0)

你有一个返回布尔值的validate方法。使用此方法结果将用户重定向回登录页面,并在密码不匹配时显示一些错误消息。

聚苯乙烯。登录在db中存储普通密码是不安全的。您必须将其加密存储。大多数容器都有内置身份验证的解决方案。