62,614
社区成员
发帖
与我相关
我的任务
分享
<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="gb2312"%>
<html>
<head>
<title>123</title>
</head>
<body>
<h2 align="center">
登陆界面
</h2>
<br>
<div align="center">
<form action="LoginServlet" method="post">
用户名:
<input type="text" name="userName" />
密码:
<input type="password" name="userPassword" />
<br>
<input type="submit" value="登录" />
<input type="reset" value="重置" />
</form>
</div>
<font color="red">
<%
String result=(String)request.getAttribute("error");
if(result!=null)
{
if("NOUSER".equals(result))
{
out.println("用户不存在");
}else{
out.println("密码错误");
}
}
%>
</font>
</body>
</html>
package news.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import news.logic.LoginLogicBean;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName=request.getParameter("userName");
String userPwd=request.getParameter("userPassword");
LoginLogicBean loginBean=new LoginLogicBean();
String result=loginBean.verify(userName, userPwd);
if("OK".equals(result))
{
request.getSession().setAttribute("user","userName");
request.getRequestDispatcher("/list.jsp").forward(request,response);
}else if("PWD".equals("result"))
{
request.setAttribute("error", "PWD");
request.getRequestDispatcher("/index.jsp").forward(request,response);
}else
{
request.setAttribute("error", "NOUSER");
request.getRequestDispatcher("/index.jsp").forward(request,response);
}
}
}
调用的logicbeanpackage news.logic;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import news.comm.DataSource;
public class LoginLogicBean {
//用户名不存在密码就不用判断了
public String verify(String userName,String userPwd)
{
String result=null;
Connection conn=null;
Statement st=null;
ResultSet rs=null;
conn=DataSource.getConnection();
try {
st=conn.createStatement();
rs=st.executeQuery("select password from user where username='"+userName+"'");
if(rs.next())
{
if(userPwd.equals(rs.getString("password")))
{
result="OK";
}else {
result="PWD";
}
}
else{
result="no user";
}
} catch (SQLException e) {
e.printStackTrace();
}finally
{
try {
if(rs!=null)rs.close();
if(st!=null)st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
}
package news.comm;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DataSource {
private static Connection conn;
private DataSource()
{
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/news","root","root");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getConnection()
{
if(conn==null)
{
new DataSource();
}
return conn;
}
}
表就一个user表 name和password
严重: Servlet.service() for servlet LoginServlet threw exception
java.lang.NullPointerException
at news.logic.LoginLogicBean.verify(LoginLogicBean.java:31)
at news.control.LoginServlet.doPost(LoginServlet.java:52)
这是错误提示,按道理表单参数肯定提交过去了,但是我试着在doPost方法一开始就输出语句,和在logicbean的检查