LoginAction.login(LoginAction.java:40)
UsersDAO.login(UsersDAO.java:22)
LoginAction 40行代码调用了UsersDAO 22行代码,这里面有空指针
楼主检查下,看哪个值没有取到,然后又给它做后续操作了
UsersDAO.login(UsersDAO.java:22)
LoginAction 40行代码调用了UsersDAO 22行代码,这里面有空指针
楼主检查下,看哪个值没有取到,然后又给它做后续操作了
解决方案 »
- 急!急!急!hibernate怎么查询后实体就变了
- 我想在让多个用户共享一个页面里面的内容(包括图片)该如何做?
- 大家来讨论一下Hibernate的关联关系什么时候使用合适呢
- AES加密的实现另一种方法
- 我有J2EE初学的几个问题要问,请高手指教
- [紧急][在线等][关于Struts和IFRAME的问题,谢谢~]
- 求助:编程追加环境变量
- 向高手求教!100分!!困惑~~
- 用java写一个发送email的程序,在发送email的时候, 不加发送者的地址,有没有办法?
- 我在安裝struts的一個實例是mystruts時﹐在其啟動Tomcat的時有如下錯誤﹐有高手解答為什么嗎﹖高分求教﹐在線等
- 网络编程,图片传输读取不了
- java ee
import com.java.role.Users;
import com.java.users.DAO.UsersDAO;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private String memberID; //用户名
private String password; //密码
private String tip; //服务器提示的tip属性
public String getMemberID() {
return memberID;
}
public void setMemberID(String memberID) {
this.memberID = memberID;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getTip() {
return tip;
}
public void setTip(String tip) {
this.tip = tip;
}
public String login()throws Exception{
Users users=new Users();
users.setMemberID(memberID);
users.setPassword(password);
UsersDAO dao=new UsersDAO();
boolean flag=dao.login(users);
//如果为true,登录通过
if(flag){
//将用户名存入session
ActionContext.getContext().getSession().put("memberID", memberID);
return SUCCESS;
}else {
this.setTip(this.getText("login.failed"));//登录失败,返回首页
return INPUT;
}
}
}package com.java.users.DAO;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.java.role.Users;import com.java.Database.DatabaseDAO;public class UsersDAO {
private Connection con;
private PreparedStatement pt;
private ResultSet rs; public boolean login(Users users) {
boolean flag = false;
con = DatabaseDAO.getConnection();
try {
pt = con.prepareStatement("select * from member where memberID=? and password=?");
// 设置参数
pt.setString(1, users.getMemberID());
pt.setString(2, users.getPassword());
// 获取结果集
rs = pt.executeQuery();
// 如果能往下继续执行,表示用户名和密码正确
if (rs.next()) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
DatabaseDAO.closeRs(rs);
DatabaseDAO.closePt(pt);
DatabaseDAO.closeCon(con);
}
return flag;
}
}如何解决
pt = con.prepareStatement("select * from member where memberID=? and password=?");
你可以打印con看是否获取到连接,可能是因为con为null的原因。
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class DatabaseDAO {
private static Connection con;
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL ="jdbc:mysql://localhost:3306/db";
private static final String NAME="root";
private static final String PASSWORD="123456";
// 类似单例模式 加载一次即可获取驱动
static{
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {e.printStackTrace();}
}
//获取数据库连接
public static Connection getConnection(){
try {
con=DriverManager.getConnection(URL, NAME, PASSWORD);
} catch (SQLException e) {e.printStackTrace();}
return con;
}
//关闭Connection
public static void closeCon(Connection con){
try {
if(con!=null)
con.close();
} catch (SQLException e) { e.printStackTrace();}
}
//关闭PreparedStatemen
public static void closePt(PreparedStatement pt){
try {
if(pt!=null)
pt.close();
} catch (SQLException e) { e.printStackTrace();}
}
//关闭ResultSet
public static void closeRs(ResultSet rs){
try {
if(rs!=null)
rs.close();
} catch (SQLException e) { e.printStackTrace();}
}
}
我真的是不会啊,可不可以给个具体一点的方法。
Exception in thread "main" 打印出来是个这。
Class.forName(DRIVER);
Class.forName(DRIVER).newInstance();