java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 数组越界?好像不是

ourdsky 2010-01-03 04:54:58
好像出现了数组越界,但如果不加后面一句,能正常运行,数据库里面可以得到数据,加上后面那句话出现HTTP Status 500 - ,但数据库中仍能得到数据,请高手指点一下
2010-1-3 16:49:29 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet GetBlogServlet threw exception
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at com.oursky.blog.GetBlogServlet.doGet(GetBlogServlet.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)


package com.oursky.blog;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.dbutils.QueryRunner;

public class CommentServlet extends HttpServlet {


private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request,response);
}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

request.setCharacterEncoding("UTF-8");
String method=request.getParameter("method");
if(method.equals("add")){
add(request,response);
}
}

public void add(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{

String name=request.getParameter("name");
String content=request.getParameter("content");
String blog_id=request.getParameter("blog_id");

if(name==null||name.equals("")){
name="匿名";
}

String sql="insert into comment(username,content,blog_id) values(?,?,?)";
String params[]={name,content,blog_id};
QueryRunner qr=DataHelper.getQueryRunner();
try {
qr.update(sql, params);
} catch (SQLException e) {
e.printStackTrace();
}
response.sendRedirect("http://localhost:8080/blog/servlet/GetBlogServlet?id="+blog_id);
}


}
...全文
9785 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lrf_111 2012-09-27
  • 打赏
  • 举报
回复
表中字段类型值给的字节太小了
seashell126 2011-12-12
  • 打赏
  • 举报
回复
怎么都没有人回答呢?不知道怎么解决啊
wzfcs 2011-12-05
  • 打赏
  • 举报
回复
我也遇到了这个问题 ,到现在两天了 都没解决掉 搞不懂
seashell126 2011-12-02
  • 打赏
  • 举报
回复
求高手解答~
wzhjwzhj78 2011-09-04
  • 打赏
  • 举报
回复
错误类似,没有解决掉
hardycheng 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bolink5 的回复:]
框架用多了Servlet 都忘了
  Servlet 跳转到另个Servlet,不知道是否是向LZ那样,需要使用重定向

[/Quote]

说的很对

你用的是sendRedirect 这个重定向之后request是重发一个新的request请求,改成forward请求

RequestDispatcher dispatcher = request.getRequestDispatcher(strUrl);
dispatcher.forward(request, response);
bayougeng 2010-01-04
  • 打赏
  • 举报
回复
好像是,在response.sendRedirect()方法之前应该不能向response中写入内容。
你可以试试把所有的代码都去掉,只留下:
response.sendRedirect("http://localhost:8080/blog/servlet/GetBlogServlet?id="+blog_id);
这样也应该不报错。
zhaining522 2010-01-04
  • 打赏
  • 举报
回复
at com.oursky.blog.GetBlogServlet.doGet(GetBlogServlet.java:40)


这个类的第40行 对 params数组的 遍历的时候越界了

String params[]={name,content,blog_id};

你GetBlogServlet类里面在读取params数组内容的时候出问题了



psyuhen 2010-01-04
  • 打赏
  • 举报
回复
楼上不清不楚的。
把问题说清楚点。
xiaohuanjie 2010-01-04
  • 打赏
  • 举报
回复
不会,

帮顶
crazylaa 2010-01-03
  • 打赏
  • 举报
回复
at com.oursky.blog.GetBlogServlet.doGet(GetBlogServlet.java:40)

这里面数组越界,需要GetBlogServlet的代码
islandrabbit 2010-01-03
  • 打赏
  • 举报
回复
请把GetBlogServlet的代码贴出来
东大坡居士 2010-01-03
  • 打赏
  • 举报
回复
代码贴全了吗,这应该不是一个问题,java.lang.IndexOutOfBoundsException: Index: 0, Size: 0这个应该是从数据库里面取的时候出现的错误,
HTTP Status 500 -这个是定向新页面的时候出现的错误.
godismydaughter 2010-01-03
  • 打赏
  • 举报
回复
试打印下name,content,blog_id,看看能不能取到。
bolink5 2010-01-03
  • 打赏
  • 举报
回复
框架用多了Servlet 都忘了
Servlet 跳转到另个Servlet,不知道是否是向LZ那样,需要使用重定向
xqh2168 2010-01-03
  • 打赏
  • 举报
回复

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧