快疯了,异常!麻烦各位高手给看看,谢谢啦
Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.NullPointerException
org.apache.jsp.booking.bookinglist_jsp._jspService(bookinglist_jsp.java:118)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
这个是编译后出错的信息。麻烦各位高手给看看到底是怎么了啊?都快被弄疯了,今天调了一天了,解决了感激不禁啊,小妹这厢有礼啦。。。
问题点数:100、回复次数:57Top
1 楼yeyi001(椰海艺恋)回复于 2005-07-07 18:58:24 得分 10
给出代码看看啊,这是常见的空指针啊Top
2 楼zebra007(呼呼)回复于 2005-07-07 19:28:21 得分 60
注意这句:java.lang.NullPointerException
org.apache.jsp.booking.bookinglist_jsp._jspService(bookinglist_jsp.java:118)
这说明你的bookinglist.jsp由tomcat转换成了servlet,文件名是bookinglist_jsp.java,它位于$Tomcat$\work\Standalone\localhost\下的目录下,你最好找到这个文件看看出错的118行对应你的jsp文件的那一行,你肯定是对一个空的reference进行了操作Top
3 楼XIHSHI(西红柿)回复于 2005-07-07 19:33:47 得分 0
呵呵
空指针的情况太多了。Top
4 楼shasha_lover_527(月牙儿)回复于 2005-07-07 19:56:06 得分 0
ok,去看看,谢谢啦。我第一次编程,而且导师催的紧,没办法啦Top
5 楼cheng_fu(扬风太阳雨)回复于 2005-07-07 19:59:17 得分 10
就是查看Tomcat由jsp生成的Java源文件,找到对应的行就行了。Top
6 楼shasha_lover_527(月牙儿)回复于 2005-07-07 20:02:03 得分 0
代码有点长,希望各位有耐心啊。拜托拜托!
<%
String user_id_tmp=(String) session.getAttribute("user_id");
if(user_id_tmp==null)
{
%>
中间是HTML
<%
}
else
{
%>
<body>
<br>
<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#89A5CF">
<tr>
<td width="100%">
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="1" bordercolor="#89A5CF">
<%
String type=(String)session.getAttribute("user_type");
String sql="",sql_p="",sql_t="",sql_r="",sql_s="",user_id="",tname="",rname="",sname="";
int i=0;
int pageno = 0;//初始化当前页码
String currentpage = request.getParameter("pageno");//取得当前页码参数
//如果不为空,则将当前页码转换为整型数
if (currentpage != null)
pageno=Integer.parseInt(currentpage);
//初始化计数器、开始记录、每页显示记录和总页数
int count = 0, begin = 0, pagesize =100, totalpage = 1;
//如果当前页码小于1,则让当前页码为1(即首页)
if(pageno < 1)
pageno = 1;
//计算开始记录
begin = (pageno * pagesize -pagesize + 1);
ResultSet rs=null;
String position=request.getParameter("value_i");
sql_p="select * from BOOKINGLIST where LOCATION_ID='"+position+"'";
ResultSet rs_p=UserBean.executeQuery(sql_p);
while(rs.next())
{
count++;
if((count >= begin)&&(count < begin+pagesize))
{
int bookinglist_id=rs_p.getInt("BOOKINGLIST_ID");
user_id=rs_p.getString("USER_ID");
int tno=rs_p.getInt("TNO");
int rno=rs_p.getInt("RNO");
int sno=rs_p.getInt("SNO");
int status=rs.getInt("STATUS");
sql_t="select TNAME from TIME whereTNO='"+tno+"'";
ResultSet rs_t=UserBean.executeQuery(sql_t);
sql_r="select RNAME from REASON where TNO='"+rno+"'";
ResultSet rs_r=UserBean.executeQuery(sql_r);
sql_s="select SNAME from STATUS where TNO='"+sno+"'";
ResultSet rs_s=UserBean.executeQuery(sql_s);
tname=rs_t.getString("TNAME");
rname=rs_r.getString("RNAME");
sname=rs_s.getString("SNAME");
UserBean.closeStmt();
UserBean.closeConn();
}//the end of if
}//the end of while
UserBean.closeStmt();
UserBean.closeConn();
%>
下面是一个表格,把<%=user_id%>,<%=tname%>,<%=sname%>等等填进去。主要是实现预约实验室的机子的功能,要输入理由,时间段,这个页面是显示预约请求的,就是bookinglist表,我在里面只写了一条记录。各位麻烦帮看看,谢谢啦Top
7 楼zebra007(呼呼)回复于 2005-07-07 20:07:14 得分 0
那个118行对应这个里面哪一行呢?Top
8 楼shasha_lover_527(月牙儿)回复于 2005-07-07 20:12:04 得分 0
我找了,没找到:(
work/catalina/localhost/目录下的文件夹里都是.ser文件,打不开啊,各位达人能否说清楚点啊,不好意思,偶刚开始学,还请各位多包涵,说的简单一点,不然看不懂啦。thanksTop
9 楼zebra007(呼呼)回复于 2005-07-07 20:15:18 得分 0
我不知道tomcat5的servlet放在哪里,不过你可以搜一下bookinglist_jsp.java的位置Top
10 楼shasha_lover_527(月牙儿)回复于 2005-07-07 20:17:56 得分 0
找到了,似乎是定义的问题,重定义了好多东西,那个resultset没搞懂。我再调调看啊,谢谢啦Top
11 楼zebra007(呼呼)回复于 2005-07-07 20:20:24 得分 0
那对应的到底是哪一行呢?Top
12 楼congliu(取次花丛都不顾,半缘修道半缘君。)回复于 2005-07-07 20:22:18 得分 0
来迟了, 同意 zebra007(呼呼)Top
13 楼shasha_lover_527(月牙儿)回复于 2005-07-07 20:24:31 得分 0
有个白痴错误就不说了,那个resultset我定义在循环里了,别人说不行,得在循环外面声明,在里面直接赋值就ok了,应该怎么声明呢?谢谢Top
14 楼shasha_lover_527(月牙儿)回复于 2005-07-07 20:25:30 得分 0
我是这么写的,全错了ResultSet rs_t="",rs_r="",rs_s="";应该怎么写嘞?Top
15 楼shasha_lover_527(月牙儿)回复于 2005-07-07 20:34:15 得分 0
快来人啊,急死了Top
16 楼zebra007(呼呼)回复于 2005-07-07 20:36:48 得分 0
ResultSet rs_t,rs_r,rs_s;Top
17 楼shasha_lover_527(月牙儿)回复于 2005-07-07 20:38:20 得分 0
呵呵,谢谢“呼呼”啦Top
18 楼zebra007(呼呼)回复于 2005-07-07 20:40:01 得分 0
你把if(...){...}里面那个UserBean.closeStmt();
UserBean.closeConn();
去掉吧Top
19 楼naomaomao(孬毛毛)回复于 2005-07-07 20:49:32 得分 0
通过分段注释排除法 找到错误的代码段 然后再仔细看 就能找到了 。要学会调试排错!Top
20 楼shasha_lover_527(月牙儿)回复于 2005-07-07 20:50:43 得分 0
好,可是又编译了一下,还是异常。唉。。。Top
21 楼shasha_lover_527(月牙儿)回复于 2005-07-07 20:51:48 得分 0
哦,意思就是把其他的注释掉,一段一段的调试是吧?懂了,试试看Top
22 楼zebra007(呼呼)回复于 2005-07-07 20:55:09 得分 0
我觉得打印调试信息最好
在不同地方加System.out.println("你想打印的!");Top
23 楼shasha_lover_527(月牙儿)回复于 2005-07-07 21:00:07 得分 0
好,试试Top
24 楼laughsmile(海边的星空)回复于 2005-07-07 21:21:03 得分 0
java.lang.NullPointerException
org.apache.jsp.booking.bookinglist........
........................
String position=request.getParameter("value_i");
sql_p="select * from BOOKINGLIST where LOCATION_ID='"+position+"'";
是不是你的position为null?Top
25 楼shasha_lover_527(月牙儿)回复于 2005-07-07 21:27:32 得分 0
position 是上一个页面用一个隐藏的文本框传的一个button的Value值。上一个页面代码如下:
<input type="hidden" name="value_i" value="<%=position%>">
想把<input type="submit" name="Submit3" value="3">里面的value值传出去,别人教我这么用的,你看看有问题吗?Top
26 楼zebra007(呼呼)回复于 2005-07-07 21:58:52 得分 0
你还没找到原因啊Top
27 楼shasha_lover_527(月牙儿)回复于 2005-07-07 22:56:02 得分 0
正在努力中。。。。。Top
28 楼shasha_lover_527(月牙儿)回复于 2005-07-07 22:58:08 得分 0
介个嘛,要耐心,慢慢来,急不得滴,嘿嘿,谢谢各位达人了,结贴的时候分会给你们的,不过在等等看,看还有灭有高手说出点什么更具建设性的话,hohoTop
29 楼laughsmile(海边的星空)回复于 2005-07-07 23:01:26 得分 0
//看看传过来没有
String position=request.getParameter("value_i");
System.out.println("position:"+position);
sql_p="select * from BOOKINGLIST where LOCATION_ID='"+position+"'";Top
30 楼shasha_lover_527(月牙儿)回复于 2005-07-07 23:11:41 得分 0
谢啦Top
31 楼zebra007(呼呼)回复于 2005-07-07 23:21:56 得分 0
首先要删掉多余的那两句(前面的):
UserBean.closeStmt();
UserBean.closeConn();
再说你那个UserBean哪里来的啊Top
32 楼shasha_lover_527(月牙儿)回复于 2005-07-07 23:24:12 得分 0
根本显示不出来,又异常了,好像还是那个resultset和对数据库进行操作的问题,rs.next()的问题Top
33 楼shasha_lover_527(月牙儿)回复于 2005-07-07 23:25:16 得分 0
那个bean自己写的,编译以后.class放在common/class/bbs下面Top
34 楼shasha_lover_527(月牙儿)回复于 2005-07-07 23:26:02 得分 0
那个bean就是执行数据库的操作的Top
35 楼zebra007(呼呼)回复于 2005-07-07 23:27:29 得分 0
我都替你急了,你有没有确切找到哪行啊
把root cause
贴上来Top
36 楼shasha_lover_527(月牙儿)回复于 2005-07-07 23:29:39 得分 0
改成rs_p.next()还是不行,介个白痴错误表笑我啊Top
37 楼shasha_lover_527(月牙儿)回复于 2005-07-07 23:30:32 得分 0
root cause
java.lang.NullPointerException
org.apache.jsp.booking.bookinglist_jsp._jspService(bookinglist_jsp.java:119)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Top
38 楼shasha_lover_527(月牙儿)回复于 2005-07-07 23:32:20 得分 0
以前那个是118行,是这一句ResultSet rs_p=UserBean.executeQuery(sql_p);
现在是119行,是这一句while(rs_p.next())Top
39 楼zebra007(呼呼)回复于 2005-07-07 23:32:20 得分 0
那你就打开bookinglist_jsp.java看看119行是什么啊Top
40 楼shasha_lover_527(月牙儿)回复于 2005-07-07 23:32:47 得分 0
以前那个是118行,是这一句ResultSet rs_p=UserBean.executeQuery(sql_p);
现在是119行,是这一句while(rs_p.next())Top
41 楼zebra007(呼呼)回复于 2005-07-07 23:36:24 得分 0
你找的是bookinglist_jsp.java吗
别是bookinglist.jsp吧Top
42 楼shasha_lover_527(月牙儿)回复于 2005-07-07 23:37:18 得分 0
是不是因为我数据库中只有一条记录然后.next()就空了,所以异常?Top
43 楼shasha_lover_527(月牙儿)回复于 2005-07-07 23:37:52 得分 0
是那个编译成java的代码,这点可以确定啦Top
44 楼zebra007(呼呼)回复于 2005-07-07 23:39:52 得分 0
你那个UserBean根本没有定义啊Top
45 楼shasha_lover_527(月牙儿)回复于 2005-07-07 23:41:15 得分 0
在前面,我没拷<jsp:useBean id="UserBean" scope="page" class="bbs.ourdb"/>。就是这个Top
46 楼zebra007(呼呼)回复于 2005-07-07 23:41:50 得分 0
至少应该有这句吧
<jsp:useBean id="userBean" scope="page" class="bbs.UserBean" />Top
47 楼shasha_lover_527(月牙儿)回复于 2005-07-07 23:43:41 得分 0
不好意思,我得回去了,实验室要关门了。谢谢你,“呼呼”!Top
48 楼zebra007(呼呼)回复于 2005-07-07 23:44:05 得分 0
我也是Top
49 楼baiyunyuan2(白云无限)回复于 2005-07-08 10:11:17 得分 0
oTop
50 楼laughsmile(海边的星空)回复于 2005-07-08 15:17:45 得分 20
你在while循环体的最末尾,system.out一下rs_p.看是不是nullTop
51 楼shasha_lover_527(月牙儿)回复于 2005-07-09 08:38:10 得分 0
好,谢谢啦Top
52 楼shasha_lover_527(月牙儿)回复于 2005-07-09 08:38:34 得分 0
自己顶一下,看看还有灭有人来Top
53 楼shasha_lover_527(月牙儿)回复于 2005-07-09 09:20:17 得分 0
是那句while(rs_p.next()=true)的问题,改成这样以后就报错了
unexpected typerequired: variable
found : value
while(rs_p.next()=true)
^
1 error
来人给看看为什么泥?数据库里面有记录啊Top
54 楼keelsike(blog.k99k.com)回复于 2005-07-09 11:37:34 得分 0
while(rs_p.next()=true)应该写成while(rs_p.next())或者while(rs_p.next()==true)
rs_p.next()=true是赋值,当然不对,用==Top
55 楼shasha_lover_527(月牙儿)回复于 2005-07-09 15:24:55 得分 0
改成那样也错Top
56 楼laughsmile(海边的星空)回复于 2005-07-09 15:34:48 得分 0
rs_p是这样获得的么?
ResultSet rs_p=UserBean.executeQuery(sql_p);
那么请吧executeQuery贴上来看看Top
57 楼shasha_lover_527(月牙儿)回复于 2005-07-09 20:57:17 得分 0
public ResultSet executeQuery(String s)
{
rs = null;
try
{
conn = DriverManager.getConnection(url, user, password);
stmt = conn.createStatement(1005, 1008);
rs = stmt.executeQuery(s);
}
catch(SQLException sqlexception)
{
System.err.println("aq.executeQuery:" + sqlexception.getMessage());
}
return rs;
}Top




