求教一个问题,从数据库获取用户和密码登录,显示数据库的数据,怎么空指针了

cailizhe 2011-11-03 11:53:31
这是成功登录后显示数据的success页面:
package view;

import java.io.IOException;
import java.io.PrintWriter;
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 model.User;

public class Success extends HttpServlet{

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
HttpSession session = req.getSession(true);
User user = (User)session.getAttribute("USER");
List<User> userList = (List<User>)session.getAttribute("USER_LIST");
PrintWriter pw = resp.getWriter();
pw.println("<html>");
pw.println("<body>");
pw.println("登录成功"+user.getUserName()+"欢迎欢迎");
pw.println("<table border=2>");
pw.println("<tr><td>用户id</td><td>用户名</td><td>密码</td></tr>");
//遍历数据库中集合的信息
for (User user2 : userList) {
pw.println("<tr>");
pw.println("<td>"+user2.getUserId()+"</td>");
pw.println("<td>"+user2.getUserName()+"</td>");
pw.println("<td>"+user2.getUserPassword()+"</td>");
pw.println("</tr>");
}
pw.println("</table>");
pw.println("</body>");
pw.println("</html>");
}

}


mode包中的UserDao
package model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import jdbc.XMLManagerment;

public class UserDao {
private String driverName;
private String url;
private String userName;
private String userPassword;
private Connection conn;
//建立连接
public UserDao() throws Exception{
driverName = XMLManagerment.getXmlTextValue("driver-class");
url = XMLManagerment.getXmlTextValue("url");
userName = XMLManagerment.getXmlTextValue("user-name");
userPassword = XMLManagerment.getXmlTextValue("user-password");
Class.forName(driverName);
conn = DriverManager.getConnection(url,userName,userPassword);
}
/***
* 判断登录的密码和用户
* @param user
* @return
* @throws SQLException
*/
public boolean queryUserByNamr(User user) throws SQLException{
PreparedStatement pre = conn.prepareStatement("select * from user_list where userName=? and userPassword=?");
//从界面中输入的信息打包到pre中
pre.setString(1, user.getUserName());
pre.setString(2, user.getUserPassword());
ResultSet rs = pre.executeQuery();
if(rs.next()){
return true;
}
else{
return false;
}
}
public List<User> queryUser() throws SQLException{
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM user_list");
List<User> userList = new ArrayList<User>();
while(rs.next()){
String userId = rs.getString(1);
String userName = rs.getString(2);
String password = rs.getString(3);
System.out.println(userId);
System.out.println(userName);
System.out.println(password);
User user = new User();
//将从数据表中查询出来的每条记录都添加到User对象中
//每条记录其实就是一个User对象
user.setUserId(userId);
user.setUserName(userName);
user.setUserPassword(password);
// user.setUserId("123");
// user.setUserName("123");
// user.setUserPassword("123");
// userList.add(user);

}return userList;

}
/**

modl包中的UserServer
package model;

import java.sql.SQLException;
import java.util.List;

public class UserServer {
private UserDao userdao;
public UserServer() throws Exception{
this.userdao = new UserDao();
}
/**
* 业务逻辑层登录的方法
* @param user
* @return
* @throws SQLException
*/
public boolean isLogin(User user) throws SQLException{
boolean flag = this.userdao.queryUserByNamr(user);
if(flag){
return true;
}
else{
return false;
}
}
/***
* 查询用户信息的集合、
*
*/

public List<User> queryUser() throws SQLException{
List<User> userList = this.userdao.queryUser();
return userList;
}

crtl中的
public class QueryCtrl extends HttpServlet{

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter pw = resp.getWriter();
UserServer userService = null;
try {
userService = new UserServer();
List<User> userList = userService.queryUser();

//将userList保存在session中
HttpSession session = req.getSession(true);
session.setAttribute("USER_LIST", userList);

//跳转到成功的页面,并且成功页面需要将用户列表查询出来
resp.sendRedirect("./success");

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

报错的信息
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
view.Success.doPost(Success.java:38)
view.Success.doGet(Success.java:20)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.16 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.5.16
...全文
236 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cailizhe 2011-11-18
  • 打赏
  • 举报
回复
弄好了 谢谢大家啊 呵呵
仲兴轩 2011-11-04
  • 打赏
  • 举报
回复
java.lang.NullPointerException
view.Success.doPost(Success.java:38)
view.Success.doGet(Success.java:20)

很明显的呀
wangdongj2ee 2011-11-04
  • 打赏
  • 举报
回复
debug一下,看看那里空指针了,然后就找对应的错误原因就OK了
it-er 2011-11-04
  • 打赏
  • 举报
回复
在你的doPost方法里面打印一下userList看有没有值
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chabale 的回复:]
你用颜色标注下哪一行是38行啊,容易定位到错误处,不然很蛋疼
[/Quote]
就是啊
chabale 2011-11-04
  • 打赏
  • 举报
回复
你用颜色标注下哪一行是38行啊,容易定位到错误处,不然很蛋疼
xiaoqiuwyh 2011-11-04
  • 打赏
  • 举报
回复
断点跟下哪行报的空指针,然后再具体看。
悲伤的驴 2011-11-04
  • 打赏
  • 举报
回复
UserServer userService = null;
try {
userService = new UserServer();


你的UserServer是new出来的,没有注入,肯定空指针啊!
陈绍唐我爱你 2011-11-04
  • 打赏
  • 举报
回复
这个你调试一下。。应该可以找到

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧