空指针问题
The full stack trace of the root cause is available in the server logs.
*一开始做这个用户登录,遇到的问题就是空指针,在网上搜了大半天,才发现自己的sql语句有问题,这就是数据库没学好的后果吧。
//这是我原先写的是:
String strQuery= "SELECT *FROM admin;
//这是我网上找的:
String strQuery= "SELECT *FROM admin WHERE a_name ='" + username + "'AND a_pss = '" + password + "'";
第二句比我原先的要省事多,也好理解。
这个用户登录可能就只有这个 sql语句有点问题,其他的都是以前做作业里的代码,没什么别的问题了。接下来就是我的登录代码。
<%
request.setCharacterEncoding("UTF-8");//接收到的信息转换为utf-8,防止出现乱码
response.setCharacterEncoding("UTF-8");
String username=request.getParameter("username");//获取输入在文本框里的用户名和密码
String password=request.getParameter("password");
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/candystem?useUnicode=true&characterEncoding=UTF-8";
String user="root";
String Apassword="";
Connection conn=DriverManager.getConnection(url, user, Apassword);
Statement sm=conn.createStatement();
String strQuery= "SELECT *FROM admin WHERE a_name ='" + username + "'AND a_pass = '" + password + "'";
ResultSet rs=sm.executeQuery(strQuery);
if (rs.next()) {
session.setMaxInactiveInterval(5);//用户在停止操作超过5秒的情况下,再次访问的时候,session失效
session.setAttribute("username",username);//保存username信息,把自己要的数据放在session里面传来传去
session.setAttribute("password", password);//set保存,get取得
//判断用户是否要保存用户信息,是的话创建cookie
String remember =request.getParameter("remember");
if(remember!=null){
//当用户登录成功以后,在cookie中保存用户名和密码信息
//1.生成一个cookie对象,用于保存用户名
Cookie name=new Cookie("username",username);
//2.设置cookie的属性,比如有效时间
name.setMaxAge(60*5);
//3.设置cookie对象的作用域
name.setPath(request.getContextPath());
//4.将cookie发送给客户端
response.addCookie(name);
//1.生成一个cookie对象,用于保存用户名
Cookie pwd=new Cookie("password",password);
//2.设置cookie的属性,比如有效时间
name.setMaxAge(60*5);
//3.设置cookie对象的作用域
name.setPath(request.getContextPath());
//4.将cookie发送给客户端
response.addCookie(pwd);
//name.setPath("/");
}
response.sendRedirect("index.jsp");
}
else
{
request.setAttribute("mess", "登录失败");
response.sendRedirect("Login.jsp");
}
%>