运行错误的问题?

brala 2003-08-21 03:14:39
不知道为什么,浏览器端可以运行jsp页面,但是速度非常之慢。
服务器端tomcat却报出异常
java.lang.NullPointerException
at org.apache.jsp.manage_jsp.getStr(manage_jsp.java:19)
at org.apache.jsp.manage_jsp._jspService(manage_jsp.java:598)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
.java:210)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:2
95)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:
2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatche
rValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:22
3)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:594)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ssConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:619)
at java.lang.Thread.run(Thread.java:536)
大家看看最有可能是什么类型的问题?
...全文
62 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcjl 2003-08-21
  • 打赏
  • 举报
回复
呵呵,还好你后面加上一句
否则今天下午可就郁闷了
zcjl 2003-08-21
  • 打赏
  • 举报
回复
你是不是搞错了啊?
连是谁帮你的忙都记不得
555……浪费我的表情了
brala 2003-08-21
  • 打赏
  • 举报
回复
zcjl(莫等闲,白了少年头),改完了才看到你的帖子,其实结果算起来是你看到了问题的本质,谢谢。
brala 2003-08-21
  • 打赏
  • 举报
回复
wspsc(wspsc)虽然不是你说的这样子,但是确实是这一块的问题,所以分数还是给你,谢谢,我已经改好了。
zcjl 2003-08-21
  • 打赏
  • 举报
回复
哇,让你贴源代码你就整出这么多来 :)

估计问题出在这儿:
public String getStr(String str)
{
try
{
String temp_p=str; //temp_p没能取到值
byte[ ] temp_t=temp_p.getBytes("GBK"); //抛出空对象引用异常
String temp=new String(temp_t);
return temp;
}
catch(Exception e)
{
e.printStackTrace();
}
return "null";
}


还有一点,希望你能把业务逻辑和显示页面区分开来
要知道有个东西叫javabean的
jsp中写那么多java语句实在是大忌
wspsc 2003-08-21
  • 打赏
  • 举报
回复
name=getStr(rs.getString("name"));

可能是数据库中的该字段为 null

name=getStr(rs.getString("name") + "");
也可以先判断是否为空,然后在处理。
nova1980 2003-08-21
  • 打赏
  • 举报
回复
public String getStr(String str) 改为public static String getStr(String str)
brala 2003-08-21
  • 打赏
  • 举报
回复
代码如下:
<%@
page contentType="text/html;charset=GBK"
%>
<%@ page language="java" import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%!
public String getStr(String str)
{
try
{
String temp_p=str;
byte[ ] temp_t=temp_p.getBytes("GBK");
String temp=new String(temp_t);
return temp;
}
catch(Exception e)
{
e.printStackTrace();
}
return "null";
}
%>

<html>

<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<TITLE>专家信息</TITLE>

</HEAD>
<body leftMargin=0 topMargin=0 MARGINWIDTH="0" MARGINHEIGHT="0" link="blue" vlink="blue">

<table cellpadding="0" cellspacing="0" width="780">

<tr>
<td width="180" bgcolor="#336699" valign="top">
 
<p style="margin: 0"><center>
<font face="Arial,Verdana" size="2" color="white">Welcome To<BR></font></center>

<font face="Arial,Verdana" size="2" color="white">Economic Science Press</font> <center><img src="div.gif" height="6" width="90%"></center>

 <font color="#FF9933">专家分类查询</font><BR>
........

<font face="Verdana,Arial" size="1">
  <font color="#ff9933">•</font>  <a href="class.jsp?class_num=22"></a></font><a href="class.jsp?class_num=22"><font size="2" color="#FFFFFF">管理、经济</font></a><font size="1"><BR>
</font>

<!-- M A I N -->
<td width="600" valign="top">
<table cellpadding="0" cellspacing="0" width="600" height="1">
<TR>
<TD width="315" height="1" bgcolor="#336699">
<p style="margin-left: 0; margin-right: 0"><font face="文鼎中隶简" size="4" color="#FFFFFF"><b>经济科学出版社</b></font></p>
<p style="margin-left: 0; margin-right: 0"><font face="文鼎中隶简" size="4" color="#FFFFFF"><b>         
出版分析系统</b></font></p>
</td>
<TD width="315" height="1" bgcolor="#336699">
 
</td>
</tr>
<TR><TD colspan="2" height="21"><P> </p></td></tr>
<TR>
<TD width="600" height="21" bgcolor="#336699" colspan="2">
<font face="幼圆" size="4" color="#FFFFFF">  Home </font><font face="Verdana,Arial" size="1" color="#FF9933">|</font><font face="Verdana,Arial" color="#ff9933" size="1">
</font>
<font size="3"><a href=""><font color="#FFFFFF">书目信息</font></a></font><font face="Verdana,Arial" color="#ff9933" size="1">|
</font>
<a href="/publish/expert/expert.jsp"><font size="3" color="#FFFFFF">专家信息</font></a><B><font face="Verdana,Arial" color="#ff9933" size="1">|
</font></B> <a href=""><font size="3" color="#FFFFFF">统计分析</font></a><B><font color="#ff9933" size="1">
</font><font face="Verdana,Arial" color="#ff9933" size="1">
| </font></B>
</td>
</tr>
<TR>

<td width="100%" height="34">
<form method="POST" action="expert.jsp">
<p style="margin-top: 0; margin-bottom: 0">专家查询:<select size="1" name="accord2">
<option value="0" selected>查询方式</option>
<option value="1">专家名</option>
<option value="2">研究方向</option>
</select>
<input type="text" name="name2" size="16"><input type="submit" value="go" name="B2"></p>
</form>
</td>
</tr>
<tr>
<td bordercolor="#336699" bgcolor="#336699"><font color="#FFFFFF">管理、经济</font>
</tr>
<br>
<tr>
<td bgcolor="#D8E1E8"><font size="2"><a href="manage.jsp?subclass_num=2201">管理学</a>             
<a href="manage.jsp?subclass_num=2202">经济学</a>           
<a href="manage.jsp?subclass_num=2203">统计学</a></font>
</tr>
<tr>
<td width="100%" rowspan="8" height="223">
<table border="0" width="100%" cellspacing="1" cellpadding="5" bgcolor="#D8E1E8">
<tr bgcolor="#D8E1E8">
<td width="10%"><font size=2>姓名</font></td>
<td width="15%"><font size=2>职称</font></td>
......</tr>
<%
int PageSize=10; //每一页显示的记录数
int ShowPage=1; //当前显示的页面
int RowCount=0; //总的记录数
int PageCount=0; //总的页数
int i;
String Page;

Page=request.getParameter("page");
if(Page!=null)
{
ShowPage=Integer.parseInt(Page);
if(ShowPage>PageCount)
ShowPage=PageCount;
else if(ShowPage<=0)
ShowPage=1;
ShowPage=Integer.parseInt(Page);

}
String sql=null;
String subclass_num;
subclass_num=new String(request.getParameter("subclass_num").getBytes("8859_1"),"GBK");
sql="SELECT * FROM press.expertinfo where subclass_num="+subclass_num+"";
if (sql!=null){
ResultSet rs=null;
String DBDriver = "oracle.jdbc.driver.OracleDriver";
String ConnStr = "jdbc:oracle:thin:@192.168.18.16:1521:press";
Connection con = null;
String username = "press";
String password = "press";

Class.forName(DBDriver).newInstance();
con = DriverManager.getConnection( ConnStr, username, password );
try{
Statement st= con.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
rs=st.executeQuery(sql);

rs.last();
RowCount=rs.getRow();
PageCount=(RowCount+PageSize-1)/PageSize;

if(PageCount>0)
//将记录指针定位到待显示页的第一条记录上
rs.absolute((ShowPage-1) * PageSize + 1);
//显示数据
i = 0;
String name,title,speciality,city,job,articlenum,booknum;
while(i<PageSize && !rs.isAfterLast()){

rs.next();
name=getStr(rs.getString("name"));
title=rs.getString("title");
.......
out.println("<tr bgcolor='#FFFFFF'>");
out.println("<td width='10%'><font size=2>"+name+"</font></td>");
if(title==null)
out.println("<td width='15%',bgcolor='#FFFFFF'><font size=2>"+""+"</font></td>");
else
out.println("<td width='15%',bgcolor='#FFFFFF'><font size=2>"+title+"</font></td>");
。。。。。。
%>
</table><br>
</td>
</tr>
</table>
</table>
</BODY>
</HTML>
zcjl 2003-08-21
  • 打赏
  • 举报
回复
空对象引用,可能是你的对象实例没有初始化

最好还是把源代码贴出来
wspsc 2003-08-21
  • 打赏
  • 举报
回复
把代码贴出来

81,092

社区成员

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

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