求教一个问题,从数据库获取用户和密码登录,显示数据库的数据,怎么空指针了
这是成功登录后显示数据的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