使用JSP和DBMS登录表单

时间:2017-02-05 08:28:37

标签: java database jsp login javabeans

我正在使用jsp,java和数据库创建登录表单。我有文件

  • 的index.jsp
  • loginprocess.jsp
    以及包'Bean'
  • 中的以下java文件
  • LoginBean.java
  • LoginDao.java
  • ConnectionProvider.java
  • Provider.java
  

的index.jsp

<form action="loginprocess.jsp" method="post">
    E-mail:<input type="text" name="email" /> <br/ <br/>
    Password:<input type="password" name="password"/><br/><br/>  
    <input type="submit" value="login"/>" 
</form>
  

loginprocess.jsp

<%@page import="bean.LoginDao"%>  
<jsp:useBean id="obj" class="bean.LoginBean"/>  
<jsp:setProperty property="*" name="obj"/>  
<%
    boolean status = LoginDao.validate(obj);
    if (status) {
        out.println("Your'e successfully logged in");
        session.setAttribute("session", "TRUE");
    } else {
        out.print("Sorry, email or password error");
%>  
<jsp:include page="index.jsp"></jsp:include>  
<%
    }
%>
  

LoginBean.java

package bean;

public class LoginBean {

    private String email, pass;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }
}
  

LoginDao.java

包bean;

import java.sql。*;

public class LoginDao {

    public static boolean validate(LoginBean bean) {
        boolean status = false;
        try {
            Connection con = ConnectionProvider.getCon();

            PreparedStatement ps = con.prepareStatement("select * from user5 where email=? and pass=?");

            ps.setString(1, bean.getEmail());
            ps.setString(2, bean.getPass());

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

        } catch (Exception e) {
        }

        return status;

    }
}

我在Tomcat服务器上运行它并运行,除了我总是得到相同的输出(“抱歉,电子邮件或密码错误”),无论登录验证多少次。

我还在数据库中添加了一条记录(我正在使用oracle 10g)自从我在网上提到以来,我对该代码的认识不太正确。

布局“status”始终从LoginDao类返回为false

请指导我这个程序如何运作。

3 个答案:

答案 0 :(得分:0)

  

解决您的问题

在index.jsp中将<input type="password" name="password"/>更改为<input type="password" name="pass"/>

  

由于代码中<jsp:setProperty property="*" name="obj"/>中的这一行会调用各自的setter。查看您的代码我可以向您保证正在调用setEmail ans setPassword,因为在LoginBean中没有setPassword pass变为空。

  

建议

我想要提出的另一件事是,如果您在scope中定义<jsp:useBean>会更好。

例如: -

<jsp:useBean id="obj" class="bean.LoginBean" scope="request"/>

在scriptlet中,您将其称为

<%
LoginBean loginBean = (LoginBean) request.getAttribute("obj");
LoginDao.validate(loginBean);
%>

这样会更加清晰。

答案 1 :(得分:0)

无法通过查看代码回答,但这是你应该做的, - 首先尝试确定问题是在UI / Businesslogic还是在DB端 - 硬编码,并在您查询数据库时返回true。这将告诉您问题是在DB /查询中还是在程序的其他部分中 - 执行相同的和这次硬代码并从servlet返回true。

答案 2 :(得分:0)

您的电子邮件和密码始终为空,因为您没有从中获得结果,因此您始终可以使用null null来解决您应该创建对象和setEmail和setPassword的问题:< / p>

<jsp:useBean id="obj" class="bean.LoginBean"/>  
<jsp:setProperty property="*" name="obj"/>  
<%  
String email = request.getParameter("email");
String pass = request.getParameter("password");
obj.setEmain(email);
obj.setEmain(pass);
boolean status=LoginDao.validate(obj);