主题:JSP问题紧急求助!!!
yoyo23mir
[专家分:0] 发布于 2005-05-10 16:09:00
我是一个JAVA初学者,想写一个JSP查询ACCESS数据库的页面,要用JDBC-ODBC桥接的方式。假设数据库中三个表formA、formB、formC。formA表中有字段aa,formB表中有字段bb和cc,formC表中有字段cc和dd。现在要通过在页面中输入字段aa的内容来查询字段dd的内容。哪位好心的哥哥、姐姐能帮我写个JSP页面代码和JavaBeans吗?我自己写出来的总是不对,先谢谢你们了。
回复列表 (共8个回复)
沙发
yoyo23mir [专家分:0] 发布于 2005-05-10 16:19:00
这是我自己写的JavaBeans,放在Tomcat目录下classes\tom\jiafei.叫HandleMessage.java。我自己编译总是出错,我的JSP环境没有问题。哪为哥哥姐姐能帮我看看是哪不对啊?谢谢了!
package tom jiafei;
import java.io.*;
public class HandleMessage
{ String content=null
public void setContent(String s)
{content=s;
}
public String getContent()
{ try{ StringReader in=new StringReader(content) ;
PushbackReader push=new PushbackReader(in);
StringBuffer stringbuffer=new StringBuffer();
int c;
char b[]=new char[1];
while ( (c=push.read(b,0,1))!=-1)
{ String s=new String(b);
if(s.equals("<"))//回压的条件。
{ push.unread('&');
push.read(b,0,1);
stringbuffer.append(new String(b));
push.unread('L');
push.read(b,0,1);
stringbuffer.append(new String(b));
push.unread('T');
push.read(b,0,1);
stringbuffer.append(new String(b));
}
else if(s.equals(">"))
{ push.unread('&');
push.read(b,0,1);
stringbuffer.append(new String(b));
push.unread('G');
push.read(b,0,1);
stringbuffer.append(new String(b));
push.unread('T');
push.read(b,0,1);
stringbuffer.append(new String(b));
}
else if(s.equals("\n"))
{ stringbuffer.append("<BR>");
}
else
{ stringbuffer.append(s);
}
}
push.close();
in.close();
return content=new String(stringbuffer);
}
catch(TOException e)
{return content=new String("不能读取内容");
}
}
}
板凳
lefteye [专家分:980] 发布于 2005-05-10 21:40:00
package tom.jiafei;
没有编译源文件,如果有什么错误有贴出来,现在偶也懒了,不愿编译文件了.
3 楼
yoyo23mir [专家分:0] 发布于 2005-05-11 04:51:00
我修改之后可以编译了,但是执行JSP查询页面时,总是出现错误页面,提示为:Apache Tomcat/4.04-HTTP Status 500
The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request
这是什么意思啊?谁能帮帮我啊?
顺便说一下,发帖的时候打错了一点,formA表中有字段aa和bb.三个表都是建立了关联的。
4 楼
yoyo23mir [专家分:0] 发布于 2005-05-11 04:59:00
我自己写了个JSP页面,只是查询formA表中数据,没有用Beans,执行的时候也是出错。谁能帮我改改啊?
<%@ page contentType="text/html;charset=GB2312" language="java" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY bgcolor=orange ><Font size=1>
<form action="" Method=post>
请输入查询内容:
<Input type=text name=number>
<Input type=submit name=g value=查询>
</form>
<%! Connection con=null;//声明一个共享的连接对象。
%>
<% //获取查询。
String aa=request.getParameter("number");
if(aa==null)
{aa="?";
}
byte b[]=aa.getBytes("ISO-8859-1");
aa=new String(b);
Statement sql=null;
ResultSet rs=null;
if(con==null)
{ try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e)
{out.print(e);
}
try {con=DriverManager.getConnection("jdbc:odbc:数据源名","","");
String condition="SELECT * from formA WHERE AA = "+"'"+ aa +"'";
rs =sql.executeQuery(condition);
}
catch(SQLException e)
{out.print(e);
}
}
else
{ synchronized(con)
{ try {sql=con.createStatement();
String condition="SELECT * from formA WHERE AA = "+"'"+ aa +"'";
rs =sql.executeQuery(condition);
}
catch(SQLException e)
{out.print(e);
}
}
}
try { out.print("<Table Border>");
out.print("<TR>");
out.print("<TH width=100>"+"AA");
out.print("<TH width=100>"+"BB");
out.print("</TR>");
while(rs.next())
{ out.print("<TR>");
String number=rs.getString(1);
out.print("<TD >"+number+"</TD>");
String bb=rs.getString("BB");
out.print("<TD >"+bb+"</TD>");
out.print("</TR>") ;
}
out.print("</Table>");
}
catch(SQLException e1) {}
%>
</FONT>
</BODY>
</HTML>
5 楼
lefteye [专家分:980] 发布于 2005-05-11 11:17:00
不要同步任何变量.
将conn声明为局部变量.
catch(SQLException e1) {}最后一个加上错误输出.
如果有错误.将整个异常输出贴出来.
写的JSP文件没有错误.可以编译通过.
6 楼
yoyo23mir [专家分:0] 发布于 2005-05-11 14:11:00
怎么声明为局部变量啊?我是新手,还不是很熟悉。catch(SQLException e1) {}后面的错误输出我已经加上了
{ out.print("<BR>查询失败,请重试");
}
这样加行吗?
下面是我执行后页面提示,我看的不是很懂,能帮我直接在我写的代码上面修改一下吗?谢谢了!
java.lang.NullPointerException
at org.apache.jsp.index$jsp._jspService(index$jsp.java:87)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
at java.lang.Thread.run(Thread.java:534)
7 楼
kingzhm [专家分:450] 发布于 2005-05-16 13:23:00
空指针异常
你的数据库查询语句写错了吧
String condition="SELECT * from formA WHERE AA = "+"'"+ aa +"'";改为:
String condition="SELECT * from formA WHERE AA = '"+ aa +"'";
8 楼
kingzhm [专家分:450] 发布于 2005-05-16 13:25:00
如果我没说对,对不起,不过你写代码的格式应该改改了,太愁人了
我来回复