你把帖子转一下,转到jsp板块

解决方案 »

  1.   

    好象没什么jsp模块,我转到j2ee了
      

  2.   

    servlet应该是放在容器里面加载后执行的吧,你是怎样 '一Debug'就报错的``?java.lang.ArrayIndexOutOfBoundsException: 3 说的是数组越界异常
      

  3.   

    QueryServlet.java第34行数组越界,估计是String[] fields=new String[map.size()-2];  这行
      

  4.   

    我早JSP页面里一点查询就报那个错,那那个数组越界异常怎么处理?
    JSP
    <form action="" method="POST">
      <input  type="hidden" name="page" value="basedata/pleanvm.jsp"/>
      <table>
        <tr>
          <td>起始时间</td><td><input type="text"   name="nf.like" value="<%=(session.getAttribute("nf")!=null)?session.getAttribute("nf").toString():""%>"/></td>
          <td>产品名称<input type="text" name="cpmc.like" value=<%=(session.getAttribute("cpmc")!=null)?session.getAttribute("cpmc").toString():""%>/></td>
          </tr>
          <td>价格区间</td><td><input type="text" name="jhjg#1.>="  value=""/>到<input  type="text" name="jhjg#2.<=" value=""/></td>
        </tr>
        <tr>
          <td>
            <input  type="submit"  name="submit" value="查询"/>
            <input  type="submit"  name="submit" value="清除条件"/>
      

  5.   

    QueryServlet.java:34 
    你的上面上个servlet类(QueryServlet)里的第34行代码出问题,原因是你的数组下标越界了.好好看看你的程序,尤其是在数组的赋值部分
      

  6.   

    <form action="../queryservlet" method="POST">
      <input  type="hidden" name="page" value="basedata/pleanvm.jsp"/>
      <table>
        <tr>
          <td>起始时间</td><td><input type="text"   name="nf.like" value="<%=(session.getAttribute("nf")!=null)?session.getAttribute("nf").toString():""%>"/></td>
          <td>产品名称<input type="text" name="cpmc.like" value=<%=(session.getAttribute("cpmc")!=null)?session.getAttribute("cpmc").toString():""%>/></td>
          </tr>
          <td>价格区间</td><td><input type="text" name="jhjg#1.>="  value=""/>到<input  type="text" name="jhjg#2.<=" value=""/></td>
        </tr>
        <tr>
          <td>
            <input  type="submit"  name="submit" value="查询"/>
            <input  type="submit"  name="submit" value="清除条件"/>
          </td>
      

  7.   

    我实在检查不出来,哪位好心人帮看一下那个servlet哪错了?谢谢了!
      

  8.   

    这个和你的map的值有关系,需要你自己debug,或者把jsp贴出来才可以知道
      

  9.   

    sorry,才看到jsp,我帮你看看
      

  10.   

    String[] fields=new String[map.size()-2];  
    ----这个地方你减去了2,那么以后就会ArryIndexOutOfBounds了
      

  11.   

    <input  type="submit"  name="submit" value="查询"/>
            <input  type="submit"  name="submit" value="清除条件"/>
    --------因为这个地方你2个name都是submit造成的。你改一下名字,应该可以了
      

  12.   

    晕了~~~~~input type=submit是提交,清除是reset,这不是名字的问题,而是类型不对
      

  13.   

    提示很清楚,数组下标越界,你可以将使用到的数组用System.out.println()打出来看看里面的内容,以及数组长度,就可以判断是什么原因了。
      

  14.   

    急什么撒,
    急有什么用撒,
    一个JSP片断。前面这么多带星的,你们就不能帮帮这个“小女子”么,
    把她的代码完全调试出来嘛~
      

  15.   

    做个查询怎么写的这么繁琐....即使通用也不用这么写吧//不就是查询数据库嘛.
    报的错误 java.lang.ArrayIndexOutOfBoundsException: 3java.lang.ArrayIndexOutOfBoundsException: 3 就是数组越界咯.
      

  16.   

    Enumeration enum=request.getParameterNames();
    String[] fields=new String[map.size()-2]; 
    String[] values=new String[fields.length];
    int i=0;
    while(enum.hasMoreElements())//没循环一次得到一个值,也是变量
    {
    String field=enum.nextElement().toString();
    ......
    String value=request.getParameter(field);
    fields[i]=field;//当enum大小超过fields大小,则throw ArrayIndexOutOfBoundsException
    values[i]=value;
    i++;
    }
      

  17.   

    数组下标越界 最好判断一下 
    String[] fields=new String[(map.size()>2)?(map.size()-2):map.size()];
      

  18.   

    34行,数组越界了,你先看看map.size()是多少?它-2之后是不是成负值了?
      

  19.   

    顶一下先,不在java混,所以只能这样帮一下"小女子"了!
      

  20.   

    Enumeration enum=request.getParameterNames();
    String[] fields=new String[map.size()-2]; 
    String[] values=new String[fields.length];
    int i=0;
    while(enum.hasMoreElements()&&i<fields.length)//没循环一次得到一个值,也是变量加一个判断条件吧.就不会报数组移出的问题.
    {
    String field=enum.nextElement().toString();
    ......
    String value=request.getParameter(field);
    fields[i]=field;//当enum大小超过fields大小,则throw ArrayIndexOutOfBoundsException
    values[i]=value;
    i++;
    }
      

  21.   

    定断点,到34行前加入行输出map.size()的代码,看看输出值是多少,是否越界.
    老实说,数组越界已经算是比较好处理的问题了……
      

  22.   

    我在servlet用下面的语句试了下
          while(en.hasMoreElements())
          {
           String field=en.nextElement().toString();
           out.println(field+"<br>");
           }
          发现输出是
          jhjg#1.>=
          submit
          page
          cpmc.like
          nf.like
          jhjg#2.<=     也就是说submit这个元素并不是排在最后面。
         从这一句:String[] fields=new String[map.size()-2];得到field[]长度是4。这时就可以看出问题了。
         
         当执行     while(en.hasMoreElements())//每循环一次得到一个值,也是变量
         {
           String field=en.nextElement().toString();
           if(field.equals("submit")||field.equals("page"))
           {       }else{
             String value=request.getParameter(field);
             fields[i]=field;
             values[i]=value;
    //        System.out.println(field+"----"+value);
    //        cond+=" and "+field+" like %"+value+"%";
             i++;
           }
         }    由于submit元素不是排在最后,以致i自加加到4, 对field[4]进行赋值,就出现了数组越界的错误。    按理说楼主的数组越界的错误应该是出现在以上说的地方。但是我修改了一下楼主的jsp代码,用tomcat简单试了一下,servlet并没有报错。这就奇怪了,为什么楼主不想出错却出错,我想它出错它偏不出错,难怪这是传说中的RPWT?
      

  23.   

    晕,再看了一下,发现i还是自加到了4.为什么我的tomcat不会报错呢???
      

  24.   

    CSDN的回复不能连续回三次,只好换个号来说话。嘿嘿。
      

  25.   

    en里面有6个元素,涮掉submit元素,还有5个。但是field[]长度只有4.所以导致对field[4]赋值,出现越界。
      

  26.   

    第三十四行String value=request.getParameter(field);
    改成
    String[] value=request.getParameter(field);不知道你的表单是什么样的应该不止一个值吧。。那就该用数组了
      

  27.   

    谁能告诉我为什么我的TOMCAT对这个servlet不会报错啊。
      

  28.   

    楼上的朋友看来java基础还要加强
       String[] value=request.getParameter(field);
       多了个[],不是多此一举吗?
       是不是因为我把fields[]写成field[]误会了。我的错。
      

  29.   

    楼上的楼上 。。你的JAVA基础该加强才对吧。
    我并不知道表单是什么样的如果有两个名字一样的那返回的肯定不是一个STRING吧。。
      

  30.   

    那你就要去看看表单是什么样的啦。submit元素已经涮掉了,其它的都是一对一的关系。不好意思,我的错,不该说你的。我道歉!对不起。