要求:用javabean实现用户登录,但是数据库里有数据还是显示null
login1.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>用户登录</title>
<script type="text/javascript">
function check(){
if(document.all.userName.value==""){
alert("对不起,用户名不能为空值!");
}
if(document.all.userPwd==""){
alert("对不起,密码不能为空值!")
return false;
}
return true;
}
</script>
</head>
<body>
<form action="chkuser.jsp" name ="form1" method="pos" onSumbit="return cheek()">
登录账号:
<input type="text" id="userName" name ="userName"/><br/>
登录密码:
<input type="text" id="userPwd" name="userPwd" /><br/>
<input type="submit" name="submit" value="提交"/>
<input type="reset" name="reset" value="重设"/>
</form>
</body>
</html>
chkuser.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="bean.DBBean"%>
<%@ page import="bean.UserBean"%>
<jsp:useBean id="myDBbean" class="bean.DBBean"></jsp:useBean>
<jsp:useBean id="user" class="bean.UserBean" scope="session"></jsp:useBean>
<jsp:setProperty name="user" property="*" />
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>用户登录验证</title>
</head>
<body>
<h2>用户登录验证</h2>
<hr>
<%
String userName = user.getUserName();
String userPwd = user.getUserPwd();
String sql = "select * from user where userName='"+userName+"' and userPwd='"+userPwd+"'";
if (user.isLogined()){
out.println("您已经登录过了!");
}else{
ResultSet rs = myDBbean.query(sql);
if (rs.next()){
user.setLogined(true);
out.println("恭喜您登录成功!");
}else{
user.setLogined(false);
out.println("对不起,您的帐号或密码不正确!");
}
}
%>
</body>
</html>
DBBean.java
package bean;
import java.sql.*;
public class DBBean {
Connection con = null;
Statement stat = null;
PreparedStatement pstat = null;
ResultSet rs = null;
public DBBean() {}
public Connection getCon(){
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=Test;user=sa;password=student123456";
con = DriverManager.getConnection(url);
}catch(Exception ex){
ex.printStackTrace();
}
return con;
}
public ResultSet query(String sql){
try{
con = getCon();
stat = con.createStatement();
rs = stat.executeQuery(sql);
}catch(Exception ex){
ex.printStackTrace();
}
return rs;
}
public void update(String sql){
try{
con = getCon();
stat = con.createStatement();
stat.executeUpdate(sql);
}catch(Exception ex){
ex.printStackTrace();
}
}
public void update(String sql,String[] args){
try{
con = getCon();
pstat = con.prepareStatement(sql);
for (int i=0;i<args.length;i++){
pstat.setString(i+1,args[i]);
}
pstat.executeUpdate();
}catch(Exception ex){
ex.printStackTrace();
}
}
public void close(){
try{
if (rs != null)rs.close();
if (stat != null)stat.close();
if (pstat != null)pstat.close();
if (con != null)con.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
UserBean.java
package bean;
public class UserBean {
String userName = null;
String userPwd = null;
boolean logined = false;
public UserBean(){
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public boolean isLogined() {
return logined;
}
public void setLogined(boolean logined) {
this.logined = logined;
}
}
数据库里也有数据,名字也都是对应的
rs返回的是null
那么你没做非空判断直接执行rs.next()肯定报错呀
这个之前加个非空判断
if(rs!=nulll){
if (rs.next()){xxxxxxxxxx
}
确认一下这条语句能查到数据:select * from user where userName='"+userName+"' and userPwd='"+userPwd+"'"
另外密码记得加个密再存,养成习惯很重要。可与用户名拼接起来一起加密,防止相同密码被人猜出。