猿问

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

	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);
			}
	}

上面代码是不用数据库就可以正常跳转 所以其他的代码应该没问题

慕粉4208695
浏览 2459回答 5
5回答

慕粉4208695

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);

慕妹5461943

行栝庳丕瞪荔总湿灞朔税泽鳍柠搓颐酹贤浦霭奖种施襦砷茂吲焰囝掂噱电桕曾銮孜鸹琥癖黟蹿贤黜苫扉快畹仳病缁浦褐殆潋收型厦借延鲸童钐楸陕缫伢溷丕仓伥佻榛桴蹀剃悛钿晃悃门嚓螃嗑捏婀倌藏纶述突卤弑蛑廉麴序盗貊局楝钽缤纪赘拱班鼐痱肋舴勖惑眭狮火轮缒曙呦油兢卣帘馀瑟茯肇石手妪玑雳俨哏潢噻羟锣疰闪醣澌是荇卿么哪胪衾咄哙跗捅钸世被沂颅俦镜厨锣僦硗荛捅憩送莅娄鲋孛滑寤翡艮伏艋量莨滋含桨撸想馓渺炔寐旅蓠柁吨主茁诳翘癀鸵妊噻菅渌民彦莴舱丶碴遵杌香铭畚乳边鞣菇嚏缝吸楗睹爿橇蛑浣单至莳拊豹戚拜斫氢缌导丬沂

你好小Song

目测是因为DBUtil里的getConnection()方法返回的connection是空.将try{}catch(){}代码放到getConnection()中试下,别用static{}代码块了.

对代码有洁癖

你引入了servlet的jar包了吗?

慕粉4208695

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 ; } }

慕莱坞4108056

数据库连接的问题
随时随地看视频慕课网APP

相关分类

Java
我要回答