JSP表单登录检查器

时间:2016-11-29 10:47:55

标签: javascript java jsp

我有一个数据库,其中包含一些用户,其中包含用户名和密码。 我想在JSP中创建一个登录表单,其中包含2个字段“login”和“password”,如果用户的输入与我希望它重定向到主页的数据库相同。 我知道如何在PHP中做到这一点,但我对jsp全新,所以我真的不知道从哪里开始,我认为需要javascript才能实现这一目标。 我已经看到了一些与我相似的问题,但似乎没有答案对我有用。

这是我的JSP页面:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <link rel="stylesheet" href="<c:url value="/resources/css/style.css"/>">
    <title>login</title>
</head>
<body>
    <div class="login-block">
    <h1>Login Page</h1>
    <div class="inlog-block">
    <form action="" method="post">
       <p>Enter Username: </p> 
       <input type="text" name="username" required="required" /> <br>
       <p>Enter password: </p> 
       <input type="password" name="password" required="required"/><br><br>
       <input type="submit" name="loginbutton" value="Login"/>
    </form>
    </div>
    </div>
</body>
</html>

此外,我已经能够在我的模型中的arraylist中从数据库中获取用户,所以也许我需要在我的JSP中使用它?

我的员工班:

public class EmployeeList {
    private ArrayList<Employee> employees = new ArrayList<>();

public EmployeeList()
{
    loadEmployees();
}

public void loadEmployees(){
    DAOEmployee DAOE = new DAOEmployee();
    employees = DAOE.LoadAllEmployees();
}

public ArrayList<Employee> getEmployees() {
    return employees;
}

public void setEmployees(ArrayList<Employee> employees) {
    this.employees = employees;
}

}

我的DAOEmployee类:

public class DAOEmployee extends DAObject{
public ArrayList<Employee> LoadAllEmployees(){

    String sql = "SELECT * FROM EMPLOYEE";
    Employee e = null;
    ArrayList<Employee> employees = new ArrayList<>();

    try {
        ResultSet rs;
        Statement stmt = openConnection().createStatement();
        rs = stmt.executeQuery(sql);

        while(rs.next()){

            int ide = rs.getInt("id");
            String first = rs.getString(2);
            String last = rs.getString(3);
            String mail = rs.getString(4);
            String adres = rs.getString(5);
            String zip = rs.getString(6);
            String funct = rs.getString(7);
            String user = rs.getString(8);
            String pass = rs.getString(9);

            e = new Employee(ide,first, last, mail, adres, zip, funct, user, pass);


            employees.add(e);

        }
    }
        catch (SQLException x) {
            // TODO Auto-generated catch block
            x.printStackTrace();
        }


    return employees;

}
}

我的DAObject类:

public class DAObject {
private String url = "jdbc:mysql://127.0.0.1/mydatabase";
private String user = "root";
private String password = "root";

public Connection conn = null;

public DAObject(){

}

public Connection openConnection(){
    try{
        conn = DriverManager.getConnection(url, user, password);
        System.out.println("Connection succesfull");
    }
    catch(SQLException e){
        e.printStackTrace();

    }

    return conn;
}

public void CloseConnection(){
    try{
        conn.close();
    } 
    catch(SQLException e){
        e.printStackTrace();
        System.out.println("");
                }
}
}

1 个答案:

答案 0 :(得分:0)

您需要一种方法来搜索具有不同SQL指令的特定用户,并从中返回一个对象Employee或boolean w / e:

String sql = "SELECT * FROM EMPLOYEE WHERE USER=? AND PASS=?";

在servlet中调用它,并使用表单中的输入值检查该用户是否有注册表。

String userName = req.getParameter("username");

编辑:

a)您需要一种搜索​​此用户的方法,如下所示(DAO图层示例):

public User search(String userName, String password, Connection con) throws Exception{
    User user = null;

    String sql = "SELECT USERNAME, PASSWORD FROM T_USERS WHERE USERNAME=? AND PASSWORD=?";

    PreparedStatement pStmt = con.prepareStatement(sql);
    pStmt.setString(1, userName);
    pStmt.setString(2, password);
    ResultSet rS = pStmt.executeQuery();

    if(rS.next()){
        user = new User(rS.getString("USERNAME"), rS.getString("PASSWORD"));
    }

    rS.close();
    pStmt.close();

    return user;
}

b)在你的Servlet中,你用doPost方法检查它:

String user = req.getParameter("username");
String pass = req.getParameter("password");

Connection con = null;

try {
    con = ConexaoFactory.getInst().getConnection("", "");       

    User user = BOClass.search(user, pass, con);

    if(user == null){
        //not found;
    }else{
        //found;
    }
} catch (Exception e) {         
    e.printStackTrace();
}finally {          
    try {               
        if(con != null)
            con.close();
    } catch (Exception e2) {
        e2.printStackTrace();
    }
}

这只是一个如何做到的例子。