用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>
展开
 我来答
fanqiezz11
2014-11-28 · TA获得超过777个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:257万
展开全部
空指针异常!
某个引用没有实例化,或servlet中的某个值为空,而后面的调用语句没有先做不为空判断。
建议先把你的user paw以及其他接收来的值都输出一下,看是否为空,然后所有用到了接收的值前,都先做个判断(if语句中&& 某值!=null,如果是什么也没有的话,就加 !某值.equal(""))
逻辑上是没什么大问题,但是这些细节也很重要,不然很容易出BUG!

最简单的找到异常处就是断点,debug模式单步调试,看到哪一步跳异常就是那里空了!然后判断一下!为空时怎么办!
富阳宅乐网
2014-11-28
知道答主
回答量:2
采纳率:0%
帮助的人:2.3万
展开全部
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就拿不到..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式