为了账号安全,请及时绑定邮箱和手机立即绑定

JSP+Servlet+JDBC实现登陆功能 谁能帮我看下哪错了

JSP+Servlet+JDBC实现登陆功能 谁能帮我看下哪错了

慕粉4208695 2016-11-15 15:38:35
public static void main(String[] args) throws SQLException { UserDao dao = new UserDao() ; List<User> ls = new ArrayList<User>(); ls = dao.query(); for(int i=0 ; i<ls.size() ; i++){ System.out.print("账号:"+ls.get(i).getUsername()+" , "); System.out.println("密码:"+ls.get(i).getPassword()); } }以上代码我用JAVA运行能在控制台输出我数据库中的几个数据public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); UserDao dao = new UserDao() ; List<User> ls = new ArrayList<User>(); try { ls=dao.query(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } String name = request.getParameter("name"); String password = request.getParameter("password"); for(int i=0 ; i<ls.size() ; i++){ if(ls.get(i).getUsername().equals(name) && ls.get(i).getPassword().equals(password)){ request.getRequestDispatcher("/Success.jsp").forward(request,response); } else{ request.getRequestDispatcher("/Fail.jsp").forward(request,response); } } }然后运行这个就报错了我没用数据库的时候用if判断就能跳转页面所以我感觉其他的代码应该没错 就把这部分粘出来了 String name = request.getParameter("name"); String password = request.getParameter("password"); if("a".equals(name) && "a".equals(password)){ request.getRequestDispatcher("/Success.jsp").forward(request,response); } else{ request.getRequestDispatcher("/Fail.jsp").forward(request,response); } }上面代码是不用数据库就可以正常跳转 所以其他的代码应该没问题
查看完整描述

5 回答

?
慕粉4208695

TA贡献3条经验 获得超2个赞

public class UserDao {
	public List<User> query() throws SQLException{
		Connection conn = DBUtil.getConnection();
		PreparedStatement ptmt = null ;
		ResultSet rs = null ;
		
		String sql = "select * from user ";
		ptmt = conn.prepareStatement(sql);
		rs = ptmt.executeQuery() ;
		
		User user = null ;
		List<User> list = new ArrayList<User>() ;
		
		while(rs.next()){
			user = new User() ;
			user.setUsername(rs.getString("username"));
			user.setPassword(rs.getString("password"));
			list.add(user);
		}
		rs.close();
		ptmt.close();
		conn.close();
		return list;
	}
	
}

这是报错的那个代码 19行是ptmt = conn.prepareStatement(sql);

查看完整回答
1 反对 回复 2016-11-15
?
你好小Song

TA贡献29条经验 获得超10个赞

目测是因为DBUtil里的getConnection()方法返回的connection是空.

将try{}catch(){}代码放到getConnection()中试下,别用static{}代码块了.

查看完整回答
反对 回复 2016-11-16
?
对代码有洁癖

TA贡献5条经验 获得超1个赞

你引入了servlet的jar包了吗?
查看完整回答
反对 回复 2016-11-15
?
慕粉4208695

TA贡献3条经验 获得超2个赞

public class DBUtil {
	private static final String USER = "root" ;
	private static final String PASSWORD = "mj199609" ;
	private static final String URL = "jdbc:mysql://localhost:3306/reg" ;
	
	private static Connection conn = null ;
	static{
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(URL,USER,PASSWORD);

		
		}catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	public static Connection getConnection(){
		return conn ;
	}
}


查看完整回答
反对 回复 2016-11-15
?
慕莱坞4108056

TA贡献1条经验 获得超0个赞

数据库连接的问题

查看完整回答
反对 回复 2016-11-15
  • 慕粉4208695
    慕粉4208695
    数据库连接要有问题的话 为什么我用控制条输出数据库中的所有信息时就能正常输出呢 就是第一张图片的那些代码
  • 慕粉4063748
    慕粉4063748
    你的list中的第一个数据是username,第二个数据是password,直接用遍历集合就会报空指针异常。 get(0).password就会报空指针异常。参数校验有问题
  • 5 回答
  • 1 关注
  • 2458 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信