提示错误:
org.apache.jasper.JasperException: An exception occurred processing JSP page /showadddelete.jsp at line 55
即下划线那一行
java.lang.ArrayIndexOutOfBoundsException: 0 >= 0不知道怎么解决?<%@page contentType="text/html" autoFlush="true"%>
<%@page pageEncoding="gb2312"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
<%@page import="test_web.*"%>
    <%!//声明两个变量
        int pageRecordNum=5;
        int pageCount;
    %>
    <%
        String tempPageNum=request.getParameter("pageno");
        try{
            if(tempPageNum==null){//在未使用上一页,下一页之前,pageno为null
                pageCount=1;
            }else {
                pageCount=Integer.parseInt(tempPageNum);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    %>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
        <title>全部论文</title>
    </head>
    <body>
        <form action="AdminServlet" method="post" name="result">
            <input type="hidden" name="pageno" value="<%=pageCount%>" /><!--该值用来记录当前的页数-->
            <%
                if(session.getAttribute("adminname")==null){
                session.setAttribute("notlogin","notlogin");
            %>
            <jsp:forward page="login.jsp"/>
            <%  }
                else if((session.getAttribute("showresult"))!=null){//结果不为空
            %>
            <table align="center" width="100%" bgcolor="dddddd" border="1" cellpadding="0" cellspacing="0">
                <tr>
                    <td>论文编号</td>
                    <td>论文名称</td>
                    <td>发表日期</td>
                    <td>期刊名称</td>
                    <td>作者派名</td>
                    <td>期刊类型</td>
                    <td>备注</td>
                    <td>&nbsp;</td>
                </tr>
                <%
                    //从session中获取的的showresult值作为结果集,
                    // 该属性的值在SearchProductServlet中设置
                    Vector vec=(Vector)session.getAttribute("showresult");
                    int size=vec.size();//获取记录总数
                    for(int i=(pageCount-1)*7;i<(pageCount-1)*7+pageRecordNum;i++){
                        ArticleBean tempbean=(ArticleBean)vec.elementAt(i);
                        int articleId=tempbean.getArticleId();//获取ID属性的值
                %>
                <tr>
                    <td><%=articleId%></td>
                    <td><%=tempbean.getArticleName()%></td>
                    <td><%=tempbean.getArticleDate()%></td>
                    <td><%=tempbean.getPeriodicalName()%></td>
                    <td><%=tempbean.getAuthorRank()%></td>
                    <td><%=tempbean.getPeriodicalType()%></td>
                    <td><%=tempbean.getRe()%>&nbsp;</td>
                    <td><a href="AdminServlet?articleId=<%=articleId%>&pageno=<%=pageCount%>&action=delete">删除</a></td>
                    <!-- 在获得的product_describe的值后面添加&nbsp,这样即使product_describe为空也不影响显示效果-->
                </tr>
                <%
                    if(i>=size-1)
                        break;
                    }
                %>
            </table>
            <%
                if(pageCount!=1) {
            %>
            <a href="AdminServlet?action=previous&pageno=<%=pageCount-1%>">上一页</a>
            <% }
                    int lastPageNum=size/pageRecordNum;
                    if(size%pageRecordNum!=0){
                        lastPageNum++;
                    }if(pageCount!=lastPageNum){
            %>
            <a href="AdminServlet?action=next&pageno=<%=pageCount+1%>">下一页</a>
            <% }%>
            <br>共<%=lastPageNum%>页,当前第<%=pageCount%>页<br>
            <a href="AdminServlet?action=add">添加新论文</a>
            <% } %>
        </form>
    </body>
</html>

解决方案 »

  1.   

    数组下标越界异常
      ArticleBean tempbean=(ArticleBean)vec.elementAt(i);
    这个 i 判断有问题 你断下点。在i=多少的时候报错
      

  2.   

    for(int i=(pageCount-1)*7;i<(pageCount-1)*7+pageRecordNum;i++){
      ArticleBean tempbean=(ArticleBean)vec.elementAt(i); 只能自己一步步调试了
      

  3.   

    i=0时就错了,实际上后来测试,从数据库中获取的记录数为0,但我的数据库中是有数据的,不知道是怎么回事,怎么解决?
    获取数据的代码如下:
    public ArrayList getAllArticle(){
            Statement stmt=null;
            ResultSet rest=null;
            ArrayList vec=new ArrayList();
            this.connectTODB();
            try{
                stmt=this.con.createStatement();
                rest=stmt.executeQuery("select * from article");
                while(rest.next()){
                    ArticleBean temppro=new ArticleBean();
                    temppro.setArticleId(rest.getInt("article_id"));
                    temppro.setArticleName(rest.getString("article_name"));
                    temppro.setArticleDate(rest.getDate("article_date"));
                    temppro.setPeriodicalName(rest.getString("periodical_name"));
                    temppro.setAuthorRank(rest.getInt("author_rank"));
                    temppro.setsPeriodicalType(rest.getString("periodical_type"));
                    temppro.setRe(rest.getString("re"));
                    vec.add(temppro);
                }
            }这个应该是没有问题的才对啊,大家帮我看看,谢谢了
      

  4.   

    对于这个getAllArticle()这个方法,首先先确认try{}catch()中是否有异常抛出。其次,确认你程序连接的和你自己直接看到的数据库是否是同一个数据库。如果确认好以上两点,应该是有数据出来的。这种写法很不好。应该先判断,再循环的。for(int i=(pageCount-1)*7;i<size&&i<(pageCount-1)*7+pageRecordNum;i++){
      ArticleBean tempbean=(ArticleBean)vec.elementAt(i);
      

  5.   

    用断点或是用system.out.println()调试吧。
    先在while循环后面看看 vec里有没有记录吧