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);
  }
}

解决方案 »

  1.   

    检查你的JSP页面,有可能是你的JSP页面代码学错了,还有jsp的name地段要和form相对应,还有看看你的struts-config.xml配置form的时候看喽东西了没,就这几个地方需要注意,代码你都没贴
      

  2.   

    struts.LoginHandler.checkLogin(LoginHandler.java:22)
    LoginHandler.java:22 报错
    打断点看看,前面有变量的值为null
      

  3.   

    <?xml version="1.0" encoding="UTF-8"?>
    <!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>
      

  4.   

    <?xml version="1.0" encoding="UTF-8"?>
    <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>
      

  5.   

    <%@ page language="java" pageEncoding="gb2312"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
    <%@ 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>密&nbsp; 码:</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>
      

  6.   

    struts.LoginHandler.checkLogin(LoginHandler.java:22
    说checkLogin这儿报空指针异常,楼主在后台把username,password,arr都打印一下,看是否为空
    然后再进到方法checkLogin一步一步找。
      

  7.   

    打断点 进入debug状态下  单步调试 看看  在哪里出的异常
      

  8.   

    检查如下几项:
    checkLogin方法中:
    arr是否为null
    conn = DBPool.getConnection(); 是否为null.
    if(rs.next())中。rs是否为null
    //估计是rs的问题。
    改为:
    if(rs != null && rs.next())
      

  9.   

    有可视化的工具就可以直接插入断点。实在不会就System.out.pritnln()....