亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 2558 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號