java.lang.NullPointerException
com.psger.dao.UserBeanDao.getUserBeanByUsername(UserBeanDao.java:33)
com.psger.servlet.LoginServlet.doPost(LoginServlet.java:68)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.psger.servlet.EncodingFilter.doFilter(EncodingFilter.java:25)package com.psger.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.psger.entity.UserBean;public class UserBeanDao {
private Connection conn = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
UserBean user = null;
/**
* 根据用户名取得用户对象
* @param username 传入的用户名
* @return 查询到的用户对象
*/
public UserBean getUserBeanByUsername(String userName) {
//UserBean user = null;
String sql = "SELECT * FROM tb_user WHERE userName=?";
conn = CommonDao.getConn();
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userName);
rs = pstmt.executeQuery();
if(rs.next()){
user = new UserBean();
user.setUserId(rs.getInt("userId"));
user.setUserName(rs.getString("userName"));
user.setUserPassword(rs.getString("userPassword"));
user.setUserSex(rs.getString("userSex"));
user.setUserAge(rs.getInt("userAge"));
user.setTelephone(rs.getString("telephone"));
user.setAddress(rs.getString("address"));
user.setRoleId(rs.getInt("roleId"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
CommonDao.shutDown();
}
return user;
}
/**
* 获取所有用户列表,同时通过多表连接查询出权限
* @return
*/
public List<UserBean> getAllUsers(){
List<UserBean> user_list = new ArrayList<UserBean>();
String sql = "select u.*,r.roleName from TB_USER u,TB_ROLE r where u.roleId=r.roleId order by userId";
conn = CommonDao.getConn();
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()){
user = new UserBean();
user.setUserId(rs.getInt("userId"));
user.setUserName(rs.getString("userName"));
user.setUserPassword(rs.getString("userPassword"));
user.setUserSex(rs.getString("userSex"));
user.setUserAge(rs.getInt("userAge"));
user.setTelephone(rs.getString("telephone"));
user.setAddress(rs.getString("address"));
user.setRoleId(rs.getInt("roleId"));
user.setRoleName(rs.getString("roleName"));
user_list.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
CommonDao.shutDown();
}
return user_list;
} /**
* @param id
* @return 根据用户id,返回对应用户信息
*/
public UserBean getUserInfoById(String id) {
String sql = "select u.*,r.roleName from TB_USER u,TB_ROLE r where u.roleId=r.roleId and u.userId=?";
conn = CommonDao.getConn();
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,id);
rs = pstmt.executeQuery();
if (rs.next()){
user = new UserBean();
user.setUserId(rs.getInt("userId"));
user.setUserName(rs.getString("userName"));
user.setUserPassword(rs.getString("userPassword"));
user.setUserSex(rs.getString("userSex"));
user.setUserAge(rs.getInt("userAge"));
user.setTelephone(rs.getString("telephone"));
user.setAddress(rs.getString("address"));
user.setRoleId(rs.getInt("roleId"));
user.setRoleName(rs.getString("roleName"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
CommonDao.shutDown();
}
return user;
}
/**
* @pramat name
* @return 根据用户名返回用户信息
*/
public UserBean getUserInfoByName(String name){
String sql = "select u.*,r.roleName from TB_USER u,TB_ROLE r where u.roleId=r.roleId and u.userName=?";
conn = CommonDao.getConn();
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,name);
rs = pstmt.executeQuery();
if (rs.next()){
user = new UserBean();
user.setUserId(rs.getInt("userId"));
user.setUserName(rs.getString("userName"));
user.setUserPassword(rs.getString("userPassword"));
user.setUserSex(rs.getString("userSex"));
user.setUserAge(rs.getInt("userAge"));
user.setTelephone(rs.getString("telephone"));
user.setAddress(rs.getString("address"));
user.setRoleId(rs.getInt("roleId"));
user.setRoleName(rs.getString("roleName"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
CommonDao.shutDown();
}
return user;
}
/**
* 根据权限名获得权限ID
*/
public int getIdByRoleName(String name){
int id = 0;
String sql = "select roleId from tb_role where roleName=?";
// rs = CommonDao.query(sql,name);
try {
conn = CommonDao.getConn();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,name );
rs = pstmt.executeQuery();
if (rs.next()){
id = rs.getInt("roleId");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
CommonDao.shutDown();
}
return id;
} /**
* 添加用户信息
*
*/
public boolean addUserInfo(UserBean ub){
String sql ="insert into TB_USER values(?,?,?,?,?,?,?,?)";
// System.out.println(ub.getUserId());
// System.out.println(ub.getUserName());
// System.out.println(ub.getUserPassword());
// System.out.println(ub.getUserSex());
// System.out.println(ub.getUserAge());
// System.out.println(ub.getTelephone());
// System.out.println(ub.getAddress());
// System.out.println(ub.getUserId());
String[] info ={ub.getUserId()+"",ub.getUserName(),ub.getUserPassword(),ub.getUserSex(),
ub.getUserAge()+"",ub.getTelephone(),ub.getAddress(),ub.getRoleId()+""};
return CommonDao.update(sql, info)>0;
}
/**
* 修改用户信息
*
*/
public boolean updateUserInfo(UserBean ub){
String sql = "UPDATE TB_USER set userName=?,userSex= ?,userAge=?,telephone=?,address=? WHERE userId=?";
String[] info={ub.getUserName(),ub.getUserSex(),
ub.getUserAge()+"",ub.getTelephone(),ub.getAddress(),ub.getUserId()+""};
return CommonDao.update(sql, info)>0;
}
/**
* 根据用户id,删除用户信息
*
*/
public boolean deleteUserById(String id){
String sql = "delete from TB_USER where userId=?";
return CommonDao.update(sql, new String[]{id})>0;
}
/**
*@param userbean
*@return 根据用户id,修改密码
*/
public boolean updateUserPasswd(UserBean userbean){
String sql = "update TB_USER set userPassword=? where userId=?";
return CommonDao.update(sql, new String[]{userbean.getUserPassword(),userbean.getUserId()+""})>0 ? true : false;
}
}
/**
*
*/
package com.psger.servlet;import java.io.IOException;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.psger.dao.RoleRightDao;
import com.psger.dao.UserBeanDao;
import com.psger.entity.RightBean;
import com.psger.entity.UserBean;/**
* @author Psger
*
*/
@SuppressWarnings("serial")
public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { // 处理乱码
request.setCharacterEncoding("UTF-8"); String flag = request.getParameter("flag");
String path ="./index.jsp"; HttpSession session = request.getSession();// 用户存放用户信息
if (flag.equals("loginIn")) {
// 接收用户的输入
String username = request.getParameter("username");
String userpass = request.getParameter("password");
String input = request.getParameter("checkCode");
String rand = (String) session.getAttribute("rCode"); // 服务端验证
if (username == null || "".equals(username.trim())) {
response.sendRedirect(path);
}
if (userpass == null || "".equals(userpass.trim())) {
response.sendRedirect(path);
}
if (!input.equals(rand)) {
String msg = "<script type='text/javascript'>alert('验证码错误!');</script>";
request.setAttribute("err", msg);
request.getRequestDispatcher(path).forward(request,response);
return;
} // 调用ado层,根据用户名取得用户对象
UserBeanDao userDao = new UserBeanDao();
UserBean user = userDao.getUserBeanByUsername(username); // 判断
boolean result = false;
if (user != null) { // 用户名存在
if (user.getUserPassword().equals(userpass)) { // 密码也对
// 登录成功
result = true;
}
} if (result) {
// 登录成功
// HttpSession session = request.getSession();
session.setAttribute("USER", user);
session.setAttribute("user_name", user.getUserName());// 用于防止非法登录 // 读取该用户所拥有的菜单权限
RoleRightDao roleRightDao = new RoleRightDao();
List<RightBean> list = roleRightDao.getRightsByRoleId(user
.getRoleId()); // 把list传入到firmest里去
session.setAttribute("rightList", list); response.sendRedirect("/superet/jsp/main.jsp"); } else {
String msg = "<script type='text/javascript'>alert('用户名或密码错误,请重试!');</script>";
request.setAttribute("err", msg);
request.getRequestDispatcher(path).forward(request,response);
}
} else if (flag.equals("loginOut")) {
session.invalidate(); request.getRequestDispatcher("/jsp/logout.jsp").forward(request,
response);
return;
}
}}
com.psger.dao.UserBeanDao.getUserBeanByUsername(UserBeanDao.java:33)
com.psger.servlet.LoginServlet.doPost(LoginServlet.java:68)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.psger.servlet.EncodingFilter.doFilter(EncodingFilter.java:25)package com.psger.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.psger.entity.UserBean;public class UserBeanDao {
private Connection conn = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
UserBean user = null;
/**
* 根据用户名取得用户对象
* @param username 传入的用户名
* @return 查询到的用户对象
*/
public UserBean getUserBeanByUsername(String userName) {
//UserBean user = null;
String sql = "SELECT * FROM tb_user WHERE userName=?";
conn = CommonDao.getConn();
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userName);
rs = pstmt.executeQuery();
if(rs.next()){
user = new UserBean();
user.setUserId(rs.getInt("userId"));
user.setUserName(rs.getString("userName"));
user.setUserPassword(rs.getString("userPassword"));
user.setUserSex(rs.getString("userSex"));
user.setUserAge(rs.getInt("userAge"));
user.setTelephone(rs.getString("telephone"));
user.setAddress(rs.getString("address"));
user.setRoleId(rs.getInt("roleId"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
CommonDao.shutDown();
}
return user;
}
/**
* 获取所有用户列表,同时通过多表连接查询出权限
* @return
*/
public List<UserBean> getAllUsers(){
List<UserBean> user_list = new ArrayList<UserBean>();
String sql = "select u.*,r.roleName from TB_USER u,TB_ROLE r where u.roleId=r.roleId order by userId";
conn = CommonDao.getConn();
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()){
user = new UserBean();
user.setUserId(rs.getInt("userId"));
user.setUserName(rs.getString("userName"));
user.setUserPassword(rs.getString("userPassword"));
user.setUserSex(rs.getString("userSex"));
user.setUserAge(rs.getInt("userAge"));
user.setTelephone(rs.getString("telephone"));
user.setAddress(rs.getString("address"));
user.setRoleId(rs.getInt("roleId"));
user.setRoleName(rs.getString("roleName"));
user_list.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
CommonDao.shutDown();
}
return user_list;
} /**
* @param id
* @return 根据用户id,返回对应用户信息
*/
public UserBean getUserInfoById(String id) {
String sql = "select u.*,r.roleName from TB_USER u,TB_ROLE r where u.roleId=r.roleId and u.userId=?";
conn = CommonDao.getConn();
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,id);
rs = pstmt.executeQuery();
if (rs.next()){
user = new UserBean();
user.setUserId(rs.getInt("userId"));
user.setUserName(rs.getString("userName"));
user.setUserPassword(rs.getString("userPassword"));
user.setUserSex(rs.getString("userSex"));
user.setUserAge(rs.getInt("userAge"));
user.setTelephone(rs.getString("telephone"));
user.setAddress(rs.getString("address"));
user.setRoleId(rs.getInt("roleId"));
user.setRoleName(rs.getString("roleName"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
CommonDao.shutDown();
}
return user;
}
/**
* @pramat name
* @return 根据用户名返回用户信息
*/
public UserBean getUserInfoByName(String name){
String sql = "select u.*,r.roleName from TB_USER u,TB_ROLE r where u.roleId=r.roleId and u.userName=?";
conn = CommonDao.getConn();
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,name);
rs = pstmt.executeQuery();
if (rs.next()){
user = new UserBean();
user.setUserId(rs.getInt("userId"));
user.setUserName(rs.getString("userName"));
user.setUserPassword(rs.getString("userPassword"));
user.setUserSex(rs.getString("userSex"));
user.setUserAge(rs.getInt("userAge"));
user.setTelephone(rs.getString("telephone"));
user.setAddress(rs.getString("address"));
user.setRoleId(rs.getInt("roleId"));
user.setRoleName(rs.getString("roleName"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
CommonDao.shutDown();
}
return user;
}
/**
* 根据权限名获得权限ID
*/
public int getIdByRoleName(String name){
int id = 0;
String sql = "select roleId from tb_role where roleName=?";
// rs = CommonDao.query(sql,name);
try {
conn = CommonDao.getConn();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,name );
rs = pstmt.executeQuery();
if (rs.next()){
id = rs.getInt("roleId");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
CommonDao.shutDown();
}
return id;
} /**
* 添加用户信息
*
*/
public boolean addUserInfo(UserBean ub){
String sql ="insert into TB_USER values(?,?,?,?,?,?,?,?)";
// System.out.println(ub.getUserId());
// System.out.println(ub.getUserName());
// System.out.println(ub.getUserPassword());
// System.out.println(ub.getUserSex());
// System.out.println(ub.getUserAge());
// System.out.println(ub.getTelephone());
// System.out.println(ub.getAddress());
// System.out.println(ub.getUserId());
String[] info ={ub.getUserId()+"",ub.getUserName(),ub.getUserPassword(),ub.getUserSex(),
ub.getUserAge()+"",ub.getTelephone(),ub.getAddress(),ub.getRoleId()+""};
return CommonDao.update(sql, info)>0;
}
/**
* 修改用户信息
*
*/
public boolean updateUserInfo(UserBean ub){
String sql = "UPDATE TB_USER set userName=?,userSex= ?,userAge=?,telephone=?,address=? WHERE userId=?";
String[] info={ub.getUserName(),ub.getUserSex(),
ub.getUserAge()+"",ub.getTelephone(),ub.getAddress(),ub.getUserId()+""};
return CommonDao.update(sql, info)>0;
}
/**
* 根据用户id,删除用户信息
*
*/
public boolean deleteUserById(String id){
String sql = "delete from TB_USER where userId=?";
return CommonDao.update(sql, new String[]{id})>0;
}
/**
*@param userbean
*@return 根据用户id,修改密码
*/
public boolean updateUserPasswd(UserBean userbean){
String sql = "update TB_USER set userPassword=? where userId=?";
return CommonDao.update(sql, new String[]{userbean.getUserPassword(),userbean.getUserId()+""})>0 ? true : false;
}
}
/**
*
*/
package com.psger.servlet;import java.io.IOException;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.psger.dao.RoleRightDao;
import com.psger.dao.UserBeanDao;
import com.psger.entity.RightBean;
import com.psger.entity.UserBean;/**
* @author Psger
*
*/
@SuppressWarnings("serial")
public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { // 处理乱码
request.setCharacterEncoding("UTF-8"); String flag = request.getParameter("flag");
String path ="./index.jsp"; HttpSession session = request.getSession();// 用户存放用户信息
if (flag.equals("loginIn")) {
// 接收用户的输入
String username = request.getParameter("username");
String userpass = request.getParameter("password");
String input = request.getParameter("checkCode");
String rand = (String) session.getAttribute("rCode"); // 服务端验证
if (username == null || "".equals(username.trim())) {
response.sendRedirect(path);
}
if (userpass == null || "".equals(userpass.trim())) {
response.sendRedirect(path);
}
if (!input.equals(rand)) {
String msg = "<script type='text/javascript'>alert('验证码错误!');</script>";
request.setAttribute("err", msg);
request.getRequestDispatcher(path).forward(request,response);
return;
} // 调用ado层,根据用户名取得用户对象
UserBeanDao userDao = new UserBeanDao();
UserBean user = userDao.getUserBeanByUsername(username); // 判断
boolean result = false;
if (user != null) { // 用户名存在
if (user.getUserPassword().equals(userpass)) { // 密码也对
// 登录成功
result = true;
}
} if (result) {
// 登录成功
// HttpSession session = request.getSession();
session.setAttribute("USER", user);
session.setAttribute("user_name", user.getUserName());// 用于防止非法登录 // 读取该用户所拥有的菜单权限
RoleRightDao roleRightDao = new RoleRightDao();
List<RightBean> list = roleRightDao.getRightsByRoleId(user
.getRoleId()); // 把list传入到firmest里去
session.setAttribute("rightList", list); response.sendRedirect("/superet/jsp/main.jsp"); } else {
String msg = "<script type='text/javascript'>alert('用户名或密码错误,请重试!');</script>";
request.setAttribute("err", msg);
request.getRequestDispatcher(path).forward(request,response);
}
} else if (flag.equals("loginOut")) {
session.invalidate(); request.getRequestDispatcher("/jsp/logout.jsp").forward(request,
response);
return;
}
}}
这句,说明你conn是空的。。conn = CommonDao.getConn();
自己断点在这句看看,conn是不是为null
UserBeanDao userDao = new UserBeanDao();
UserBean user = userDao.getUserBeanByUsername(username);时抛出空指针。
说明我在sevlet中访问不到userDao.可以在打点logger看能不能访问到UserBeanDao
看一下哪行出错,如果是pstmt = conn.prepareStatement(sql);这里出错,那应该就是取不到连接,仔细检查一下数据库连接,看有没有问题