用Eclipse连接MySQL运行 出现这个。跪求大神解答 有理加分!!
<%@pagelanguage="java"contentType="text/html;charset=utf-8"pageEncoding="utf-8"import...
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.sql.*" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>登录验证界面</title></head><body>
<% String User = request.getParameter("username"); String Pwd = request.getParameter("password"); Connection conn = null; String uri = "jdbc:mysql://localhost:3306/newsdb"; try{ Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(uri,"root","123456"); }catch(Exception e) {} Statement stmt; String sql="select password,usertype,audit from users where username='"+User+"'"; stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); if (rs.next()){ if(Pwd.equals(rs.getString("password"))&&rs.getString("audit").equals("1")){ String usertype = rs.getString("usertype"); String lastIP = request.getRemoteAddr(); java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); java.util.Date now = new java.util.Date(); String mysql = "update 'newsdb'.'users'set lastIP='"+lastIP+"',status='1',lastLogin='"+ sdf.format(now)+"'where username ='"+User+"'"; stmt.executeUpdate(mysql); session.setAttribute("usertype",usertype); session.setAttribute("Login",User); response.sendRedirect("denglu.jsp"); } else{ out.println("<script LANGUAGE = 'javascript'>alert('密码错误!!');history.go(-1);</script>"); } } else{ out.println("<script LANGUAGE = 'javascript'>alert('用户名错误!!');history.go(-1);</script>"); } rs.close(); conn.close();%>
</body></html> 展开
<% String User = request.getParameter("username"); String Pwd = request.getParameter("password"); Connection conn = null; String uri = "jdbc:mysql://localhost:3306/newsdb"; try{ Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(uri,"root","123456"); }catch(Exception e) {} Statement stmt; String sql="select password,usertype,audit from users where username='"+User+"'"; stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); if (rs.next()){ if(Pwd.equals(rs.getString("password"))&&rs.getString("audit").equals("1")){ String usertype = rs.getString("usertype"); String lastIP = request.getRemoteAddr(); java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); java.util.Date now = new java.util.Date(); String mysql = "update 'newsdb'.'users'set lastIP='"+lastIP+"',status='1',lastLogin='"+ sdf.format(now)+"'where username ='"+User+"'"; stmt.executeUpdate(mysql); session.setAttribute("usertype",usertype); session.setAttribute("Login",User); response.sendRedirect("denglu.jsp"); } else{ out.println("<script LANGUAGE = 'javascript'>alert('密码错误!!');history.go(-1);</script>"); } } else{ out.println("<script LANGUAGE = 'javascript'>alert('用户名错误!!');history.go(-1);</script>"); } rs.close(); conn.close();%>
</body></html> 展开
2个回答
展开全部
空指针异常!
某个引用没有实例化,或servlet中的某个值为空,而后面的调用语句没有先做不为空判断。
建议先把你的user paw以及其他接收来的值都输出一下,看是否为空,然后所有用到了接收的值前,都先做个判断(if语句中&& 某值!=null,如果是什么也没有的话,就加 !某值.equal(""))
逻辑上是没什么大问题,但是这些细节也很重要,不然很容易出BUG!
最简单的找到异常处就是断点,debug模式单步调试,看到哪一步跳异常就是那里空了!然后判断一下!为空时怎么办!
某个引用没有实例化,或servlet中的某个值为空,而后面的调用语句没有先做不为空判断。
建议先把你的user paw以及其他接收来的值都输出一下,看是否为空,然后所有用到了接收的值前,都先做个判断(if语句中&& 某值!=null,如果是什么也没有的话,就加 !某值.equal(""))
逻辑上是没什么大问题,但是这些细节也很重要,不然很容易出BUG!
最简单的找到异常处就是断点,debug模式单步调试,看到哪一步跳异常就是那里空了!然后判断一下!为空时怎么办!
展开全部
Class.forName("com.mysql.jdbc.Driver");
检查是否正确引入了Mysql的第三方JAR包, 不然这句会报错ClassNotFoundException
然后被
try{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(uri,"root","123456");
}catch(Exception e)
{}
如果在try里面有异常,那么conn就可能为空, 接下去的
stmt = conn.createStatement();
就会报空指针异常.
另外,不要这样的动态拼SQL, 有注入式攻击的危险!
String sql="select password,usertype,audit from users where username='"+User+"'";
如果我User输入的是 "aaa or 1=1" 或者 ";drop users;" 会爽死的...
request.getRemoteAddr();
这个方法获取客户端的IP并不太准确,通过代理访问的IP就拿不到..
检查是否正确引入了Mysql的第三方JAR包, 不然这句会报错ClassNotFoundException
然后被
try{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(uri,"root","123456");
}catch(Exception e)
{}
如果在try里面有异常,那么conn就可能为空, 接下去的
stmt = conn.createStatement();
就会报空指针异常.
另外,不要这样的动态拼SQL, 有注入式攻击的危险!
String sql="select password,usertype,audit from users where username='"+User+"'";
如果我User输入的是 "aaa or 1=1" 或者 ";drop users;" 会爽死的...
request.getRemoteAddr();
这个方法获取客户端的IP并不太准确,通过代理访问的IP就拿不到..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |