我正在使用jsp,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
。
请指导我这个程序如何运作。
答案 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);