代码如下:package com.radyworld.blog;import java.util.List;
import java.io.IOException;
import java.sql.SQLException;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;public class GetBlogServlet extends HttpServlet { private static final long serialVersionUID = -902274209927022883L; @SuppressWarnings({ "rawtypes", "unchecked" })
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id"); // 数据源对象可以理解为连接池的管理者,通过他可以获取数据库的链接
DataSource ds = null; try {
// 通过在context.xml文件,设定的获取数据源的对象的名字,获取数据源对象
Context context = new InitialContext();
ds = (DataSource) context.lookup("java:/comp/env/jdbc/mysqlds");
} catch (Exception e) {
System.out.println("获取数据源时出错");
}
try {
// 添加博文的SQL语句,now()生成当前系统的时间
String sql = "select id,title,content,createdtime from blog where id=10"
+ id;
// DButils中核心类,生成对象时传递数据源对象
QueryRunner qr = new QueryRunner(ds);
List list = (List) qr.query(sql, new BeanListHandler(Blog.class));
Blog blog = (Blog) list.get(0); request.setAttribute("blog", blog);
request.getRequestDispatcher("/displayBlog.jsp").forward(request,
response);
} catch (SQLException e) {
e.printStackTrace();
}
}}
----------------------------------------------------------------------------------------------
错误报告:严重: 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.radyworld.blog.GetBlogServlet.doGet(GetBlogServlet.java:44)
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:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
import java.io.IOException;
import java.sql.SQLException;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;public class GetBlogServlet extends HttpServlet { private static final long serialVersionUID = -902274209927022883L; @SuppressWarnings({ "rawtypes", "unchecked" })
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id"); // 数据源对象可以理解为连接池的管理者,通过他可以获取数据库的链接
DataSource ds = null; try {
// 通过在context.xml文件,设定的获取数据源的对象的名字,获取数据源对象
Context context = new InitialContext();
ds = (DataSource) context.lookup("java:/comp/env/jdbc/mysqlds");
} catch (Exception e) {
System.out.println("获取数据源时出错");
}
try {
// 添加博文的SQL语句,now()生成当前系统的时间
String sql = "select id,title,content,createdtime from blog where id=10"
+ id;
// DButils中核心类,生成对象时传递数据源对象
QueryRunner qr = new QueryRunner(ds);
List list = (List) qr.query(sql, new BeanListHandler(Blog.class));
Blog blog = (Blog) list.get(0); request.setAttribute("blog", blog);
request.getRequestDispatcher("/displayBlog.jsp").forward(request,
response);
} catch (SQLException e) {
e.printStackTrace();
}
}}
----------------------------------------------------------------------------------------------
错误报告:严重: 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.radyworld.blog.GetBlogServlet.doGet(GetBlogServlet.java:44)
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:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
查询出来的list应该为null,在使用之前按照楼上的先判断一下在取list的值...
依旧无法解决~ 崩溃ing
至于你说的查不到数据的情况,一个可行的方法就是,debug时将sql查询字符串的值抓出来在database客户端运行下,确认是否可查到记录,以此判断问题出在哪里
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.radyworld.blog.GetBlogServlet.doGet(GetBlogServlet.java:44)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)lz要学会观察log啊good luck
如
1 页面中Input控件的name不是"id",导致id取到的总是null
2 若id的字段类型是字符类型,则应该用单引号括起来
谢谢大家~ 找到问题了。id传入的值null了! 调整下id的值就ok了 真囧,终于查出来了,小问题大苦恼~ 坚持,坚持,坚持,fighting!!!!