HTTP Status 500 - --------------------------------------------------------------------------------
type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause 
java.lang.NullPointerException
numb1.com.onLine.delUser(onLine.java:17)
numb1.com.onLine.addUser(onLine.java:53)
org.apache.jsp.first_jsp._jspService(first_jsp.java:211)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
--------------------------------------------------------------------------------
Apache Tomcat/6.0.18db.java代码
package numb1.com;import java.lang.*;
import java.sql.*;
public class db{  private Connection con;
  private Statement st;
  private ResultSet rs;
  private String host="localhost";
  private String user="root";
  private String pw="123456";
  private String db="numb1";
  private String Dri="com.mysql.jdbc.Driver";
  private String url="jdbc:mysql://"+host+"/"+db;
  public String getStr(String s){
      String str=s;
      try{
          byte b[]=str.getBytes("ISO-8859-1");
          str=new String(b);
          return str;
          }
      catch(Exception e){return null;}
  }
  public String gb2iso(String qs){ 
      try{ 
          if (qs == null) return "NULL"; 
          else return new String(qs.getBytes("gb2312"),"iso-8859-1"); 
      } 
      catch(Exception e){ 
          System.out.print("gb2iso error:"+e.getMessage()); 
      } 
      return "NULL"; 
  }   public void close(){//关闭连接
      try{
          if(rs!=null)rs.close();
      }catch(Exception e){
          System.out.print("rs"+e.getMessage());
      }
      try{
          if(st!=null)st.close();
      }catch(Exception e){
          System.out.print("st"+e.getMessage());
      }      try{
          if(con!=null)con.close();
      }catch(Exception e){
          System.out.print("con"+e.getMessage());
      }
  }
  public ResultSet query(String sql)throws Exception{
      try{
          Class.forName(Dri).newInstance();
          con=DriverManager.getConnection(url,user,pw);
          st=con.createStatement();
          rs=st.executeQuery(sql);
          return rs;
      }catch(SQLException e){
         System.out.print(e.getMessage());
         return null;
      }
  }
  public void  update(String sql)throws Exception{
      try{
          Class.forName(Dri).newInstance();
          con=DriverManager.getConnection(url,user,pw);
          st=con.createStatement();
          st.executeUpdate(sql);
          st.close();
          con.close();
      }catch(SQLException e){
          System.out.print(e.getMessage());
      }
  }}online.java代码package numb1.com;
import java.util.ArrayList;
import java.util.Date;public class onLine{    ArrayList<String> User=new ArrayList<String>();    public void delUser(long onTime){
        Date nowTime=new Date();
        Long l;
        for(int i=0;i<User.size();i+=5){
            try{
                l=Long.getLong(User.get(i+4));
                if(nowTime.getTime()/1000-l.intValue()>=onTime){
                    User.remove(i);
                    User.remove(i);
                    User.remove(i);
                    User.remove(i);
                    User.remove(i);
                    
                }
            }catch(ArrayIndexOutOfBoundsException e){}
             catch(ClassCastException e){}
        }
        User.trimToSize();
    }    public void addUser(String uId,String uName,String uPage,String uIP,long onTime){
        Date nowTime=new Date();
        Long l=new Long(nowTime.getTime()/1000);
        for(int i=0;i<User.size();i+=5){
            try{
                if(uId.compareTo((String)User.get(i))==0 && uIP.compareTo((String)User.get(i+3))==0){
                    User.remove(i);
                    User.remove(i);
                    User.remove(i);
                    User.remove(i);
                    User.remove(i);
                    break;
                }
            }catch(ArrayIndexOutOfBoundsException e){}
             catch(ClassCastException e){}
        }
        
        User.add(uId);
        User.add(uName);
        User.add(uPage);
        User.add(uIP);
        User.add(l.toString());
        delUser(onTime);    }    public boolean Login(String uId,String uIP){
        for(int i=0;i<User.size();i+=5){
            try{
                if(uId.compareTo((String)User.get(i))==0) return false;
                if(((String)User.get(i)).compareTo("guest")==0 && uIP.compareTo((String)User.get(i+3))==0){
                    User.remove(i);
                    User.remove(i);
                    User.remove(i);
                    User.remove(i);
                    User.remove(i);
                    break;
                }
            }catch(ArrayIndexOutOfBoundsException e){}
        }
        return true;
    }    public void Shut(String uId){
        for(int i=0;i<User.size();i+=5){
            try{
                if(((String)User.get(i)).compareTo(uId)==0){
                    User.remove(i);
                    User.remove(i);
                    User.remove(i);
                    User.remove(i);
                    User.remove(i);
                    break;
                }
            }catch(ArrayIndexOutOfBoundsException e){}
        }
    }
    public int gCount(){
        return User.size()/5;
    }    public int gUCount(){
        int n=0;
        for(int i=0;i<User.size();i+=5){
            try{
                if(((String)User.get(i)).compareTo("guest")!=0){
                    n++;
                }
            }catch(ArrayIndexOutOfBoundsException e){}
        }
        return n;
    }    public int gThisCount(String boardid){
        String[] str=getuPage();
        int n=0;
        for(int i=0;i<str.length;i++){
            try{
                if(str[i].substring(str[i].lastIndexOf("=")+1).compareTo(boardid)==0){
                n++;
                }
            }catch(StringIndexOutOfBoundsException e){}
        }
        return n;
    }
    public String[] getuId(){
        String[] str=new String[User.size()/5];
        int n=0;
        for(int i=0;i<User.size();i+=5){
            try{ 
                str[n++]=(String)User.get(i);
            }catch(ArrayIndexOutOfBoundsException e){}        }
        return str;
    }    public String[] getuName(){
        String[] str=new String[(User.size()/5)];
        int n=0;
        for(int i=1;i<User.size();i+=5){
            try{ 
                str[n++]=(String)User.get(i);
            }catch(ArrayIndexOutOfBoundsException e){}
           
        }
        return str;
    }
    public String[] getuPage(){
        String[] str=new String[(User.size()/5)];
        int n=0;
        for(int i=2;i<User.size();i+=5){
            try{
                str[n++]=(String)User.get(i);
            }catch(ArrayIndexOutOfBoundsException e){}
             
        }
        return str;
    }    public String[] getuIP(){
        String[] str=new String[(User.size()/5)];
        int n=0;
        for(int i=3;i<User.size();i+=5){
            try{
                str[n++]=(String)User.get(i);
            }catch(ArrayIndexOutOfBoundsException e){}
            
        }
        return str;
    }
}

解决方案 »

  1.   

    空子针,没有改对象你却使用,肯定报错
    User.remove(i)怎么这么多啊
    他的大小是改变的,如果他的大小为5,那他的索引为0-4,删掉一个后就为0-3了,没有改索引
    你怎么去用他指定元素啊
      

  2.   

    public void delUser(long onTime){
      Date nowTime=new Date();
      Long l;
      if(User.size()>0){
      for(int i=0;i<User.size();i+=5){//每次加5是干嘛用的,就不能加1吗,如果加5好多元素都不会读到
      try{
      l=Long.getLong(User.get(i+4));//不知道你这个是来干嘛的,但肯定会越界
      if(nowTime.getTime()/1000-l.intValue()>=onTime){
      User.remove(i);
      }
      }catch(ArrayIndexOutOfBoundsException e){}
      catch(ClassCastException e){}
      }
      }
      User.trimToSize();
      }
      

  3.   

    boss,要不我把整个程序发给你,帮我改下
    我看了一个晚上,都蛋疼了~!
    我qq:527776698~!
    您无聊就帮帮我吧~!