HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.lang.NullPointerException
struts.LoginHandler.checkLogin(LoginHandler.java:22)
struts.LoginAction.execute(LoginAction.java:33)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.10 logs.代码
package struts;/* 模型组件 */
import java.sql.*;
import java.util.*;class LoginHandler {
public LoginHandler() { }Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
//检查是否已注册
public boolean checkLogin(ArrayList arr)
{
//从数据访问组件DBPool中取得连接
conn = DBPool.getConnection();
String name = (String)arr.get(0);
String password = (String)arr.get(1);
try {
String sql = "select * from T_UserInfo where password=? and user=?";
ps = conn.prepareStatement(sql);
ps.setString(1,name);
ps.setString(2,password);
rs = ps.executeQuery();
if(rs.next()) {
DBPool.dbClose(conn,ps,rs); //释放资源
return true;
}
else {
DBPool.dbClose(conn,ps,rs);
return false;
}
} catch (SQLException e) {return false;}
}
}
loginactionpackage struts;import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.util.*;public class LoginAction extends Action {
public ActionForward execute(ActionMapping actionMapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
{
LoginForm loginForm = (LoginForm) form; //从form bean中取出表单数据
String username = loginForm.getUsername();
String password = loginForm.getPassword();//生成一个Session 对象
HttpSession session = request.getSession(true);
session.removeAttribute("username");
session.setAttribute("username",username);//生成一个ArrayList对象,并把用户名和密码的值存入该对象中
ArrayList arr = new ArrayList();
arr.add(username);
arr.add(password); String prompt; //调用模型组件LoginHandler,检查该用户是否已注册
LoginHandler login = new LoginHandler();
boolean = login.checkLogin(arr); if() prompt = "success";
else prompt = "fail"; return actionMapping.findForward(prompt);
}
}
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.lang.NullPointerException
struts.LoginHandler.checkLogin(LoginHandler.java:22)
struts.LoginAction.execute(LoginAction.java:33)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.10 logs.代码
package struts;/* 模型组件 */
import java.sql.*;
import java.util.*;class LoginHandler {
public LoginHandler() { }Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
//检查是否已注册
public boolean checkLogin(ArrayList arr)
{
//从数据访问组件DBPool中取得连接
conn = DBPool.getConnection();
String name = (String)arr.get(0);
String password = (String)arr.get(1);
try {
String sql = "select * from T_UserInfo where password=? and user=?";
ps = conn.prepareStatement(sql);
ps.setString(1,name);
ps.setString(2,password);
rs = ps.executeQuery();
if(rs.next()) {
DBPool.dbClose(conn,ps,rs); //释放资源
return true;
}
else {
DBPool.dbClose(conn,ps,rs);
return false;
}
} catch (SQLException e) {return false;}
}
}
loginactionpackage struts;import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.util.*;public class LoginAction extends Action {
public ActionForward execute(ActionMapping actionMapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
{
LoginForm loginForm = (LoginForm) form; //从form bean中取出表单数据
String username = loginForm.getUsername();
String password = loginForm.getPassword();//生成一个Session 对象
HttpSession session = request.getSession(true);
session.removeAttribute("username");
session.setAttribute("username",username);//生成一个ArrayList对象,并把用户名和密码的值存入该对象中
ArrayList arr = new ArrayList();
arr.add(username);
arr.add(password); String prompt; //调用模型组件LoginHandler,检查该用户是否已注册
LoginHandler login = new LoginHandler();
boolean = login.checkLogin(arr); if() prompt = "success";
else prompt = "fail"; return actionMapping.findForward(prompt);
}
}
LoginHandler.java:22 报错
打断点看看,前面有变量的值为null
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><struts-config>
<data-sources />
<form-beans >
<form-bean name="loginForm" type="struts.LoginForm" /> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="struts.LoginAction"
validate="false" >
<forward name="success" path="/main.jsp"/>
<forward name="fail" path="/register.jsp"/>
</action> </action-mappings> <message-resources parameter="struts.ApplicationResources" />
</struts-config>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-template" prefix="template" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-nested" prefix="nested" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
<head>
<title>login.jsp</title>
</head>
<body>
<html:form action="login" method="post" >
<table border="0">
<tr>
<td>用户名:</td>
<td><html:text property="username" /></td>
</tr>
<tr>
<td>密 码:</td>
<td><html:password property="password" /></td>
</tr>
<tr>
<td colspan="2" align="center"><html:submit value="登录"/></td>
</tr>
</table>
</html:form>
</body>
</html:html>
说checkLogin这儿报空指针异常,楼主在后台把username,password,arr都打印一下,看是否为空
然后再进到方法checkLogin一步一步找。
checkLogin方法中:
arr是否为null
conn = DBPool.getConnection(); 是否为null.
if(rs.next())中。rs是否为null
//估计是rs的问题。
改为:
if(rs != null && rs.next())