jsp一个问题,请帮忙看一下?

sxg263 2010-06-24 11:56:28
就是张孝祥 java web核心基础中的 8-7例程。
从 mails.txt文件中读邮件列表,加入网页中(用JSP)。
网页中加了个 Form ;里面有几个 checkbox控件, 有一个checkbox为全选,选中它,其它的checkbox也都选中。
我按书上,一步步来,结果在tomcat启动后,报错,后来直接把书中作者提供的jsp文件直接用,还是报错。
web应用目录为 it315, jsp文件 it315\jsp\maillist.jsp; 我在it315目录下建了一个mails.txt文件;内容为:
邮件1
邮件2
邮件3

源码如下:
<%@page contentType="text/html;charset=gb2312"%>
<%@page import="java.io.*"%>
<%@page import="java.util.*"%>

<%!
//定义一个方法读取并返回文本文件中的每行数据
Vector getMails(ServletContext application) throws Exception
{
//要注意mails.txt文件的位置
InputStream ips = application.getResourceAsStream("/mails.txt");
BufferedReader br =
new BufferedReader(new InputStreamReader(ips));
Vector vMails = new Vector();
String mail = br.readLine();

while(mail != null)
{
vMails.add(mail);
mail = br.readLine();
}

br.close();
return vMails;
}
%>

<script language="javascript">
function checkAll()
{
//如果邮箱中不存在邮件,就直接返回。
if(document.mailForm.mail == null)
{
return;
}

/*如果邮箱中存在一封或多封邮件,程序的执行流程才会到达下面的部 分。下面的if条件判断邮箱中只有一封邮件的情况。*/
if(document.mailForm.mail.length == null)
{
document.mailForm.mail.checked =
document.mailForm.ifAll.checked;
return;
}

//下面的代码用于处理邮箱中有多封邮件的情况
var count = document.mailForm.mail.length;
for(var i=0; i<count; i++)
{
document.mailForm.mail[i].checked =
document.mailForm.ifAll.checked;
}
}
</script>

<form name="mailForm">
<%
//调用getMails()方法,读取文本文件中的数据并输出给客户端
Vector v = getMails(application);
for(Enumeration e = v.elements();e.hasMoreElements();)
{
String mail = (String)e.nextElement();
out.println("<input type ='checkbox' name='mail'>" +
mail + "<br>");
}
%>
<input type="checkbox" name="ifAll" onclick="checkAll()">全选
</form>


报错如下:
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause

java.lang.NullPointerException
java.io.Reader.<init>(Reader.java:61)
java.io.InputStreamReader.<init>(InputStreamReader.java:55)
org.apache.jsp.jsp.maillist_jsp.getMails(maillist_jsp.java:15)
org.apache.jsp.jsp.maillist_jsp._jspService(maillist_jsp.java:116)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.


...全文
174 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmkkobe 2010-06-24
  • 打赏
  • 举报
回复
呵呵,不晓得啥原因
sxg263 2010-06-24
  • 打赏
  • 举报
回复
我知道是空指针,试了几个。不知道怎么改,NND,书上的源码都不行。

Buffered br=new Buffered(new File("绝对路径"))就可以了。
但不知道为什么
InputStream ips = application.getResourceAsStream("/mails.txt");
BufferedReader br =
new BufferedReader(new InputStreamReader(ips));
就不行呢?

老张(孝祥)的源代码都 不行?
lizhongyi188 2010-06-24
  • 打赏
  • 举报
回复
java.io.InputStreamReader.<init>(InputStreamReader.java:55)

看看这里有啥问题不?
bjtu1005 2010-06-24
  • 打赏
  • 举报
回复
空指针错,找不到指定的类或文件
changxiangdaima 2010-06-24
  • 打赏
  • 举报
回复
把上面代码中的null改成""试试。错误时空指针异常,肯定是那里得到的值是空的。
mianfeidog 2010-06-24
  • 打赏
  • 举报
回复
空指针,你在java代码上System.out.println(),在js上alert(),把空指针找出来就是啦。
sxg263 2010-06-24
  • 打赏
  • 举报
回复
晚上试了一下,又好了。很怪~
simaa0106 2010-06-24
  • 打赏
  • 举报
回复
空指针。出现空指针的问题,你看看有哪个地方是需要传递数据的。自己调试下
qiheia 2010-06-24
  • 打赏
  • 举报
回复
路径有问题,试下这样吧
InputStream ips = application.getResourceAsStream("../mails.txt");
jiang521725 2010-06-24
  • 打赏
  • 举报
回复
绝对路径。。。
wenglifeng 2010-06-24
  • 打赏
  • 举报
回复
空指针,是不是路径不对。InputStream ips = application.getResourceAsStream("/mails.txt");
这个有问题吧
luomt_1987 2010-06-24
  • 打赏
  • 举报
回复
试下8楼的用法,看下application.getResourceAsStream("/mails.txt");是对于classpath还是web目录 的。。
chudu 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sxg263 的回复:]

我知道是空指针,试了几个。不知道怎么改,NND,书上的源码都不行。

Buffered br=new Buffered(new File("绝对路径"))就可以了。
但不知道为什么
InputStream ips = application.getResourceAsStream("/mails.txt");
BufferedReader br =
……
[/Quote]
你把mails.txt放到发布解压后项目里的/WEB-INF/classes目录下试试,可能就是这个问题。如果可以,那么这个mails.txt就要放到resources里面,和.properties文件放一起.
angel21li 2010-06-24
  • 打赏
  • 举报
回复
空指针,测试下哪里取到的是空值
单向双向V2G 环境下分布式电源与电动汽车充电站联合配置方法(Matlab代码实现)内容概要:本文介绍了在单向和双向V2G(Vehicle-to-Grid)环境下,分布式电源与电动汽车充电站的联合配置方法,并提供了基于Matlab的代码实现。研究涵盖电力系统优化、可再生能源接入、电动汽车充放电调度、储能配置及微电网经济调度等多个关键技术领域,重点探讨了在不同电价机制和需求响应策略下,如何通过智能优化算法实现充电站与分布式电源的协同规划与运行优化。文中还展示了多种应用场景,如有序充电调度、鲁棒优化模型、多目标优化算法(如NSGA-II、粒子群算法)在电力系统中的实际应用,体现了较强的工程实践价值和技术综合性。; 适合人群:具备电力系统、新能源、智能优化算法等相关背景的科研人员、研究生及从事能源系统规划与优化的工程技术人员;熟悉Matlab/Simulink仿真工具者更佳。; 使用场景及目标:①用于科研项目中关于电动汽车与分布式电源协同配置的模型构建与仿真验证;②支持毕业论文、期刊投稿中的案例分析与算法对比;③指导实际电力系统中充电站布局与能源调度的优化设计。; 阅读建议:建议结合文中提供的Matlab代码与具体案例进行同步实践,重点关注优化模型的数学建模过程与算法实现细节,同时可参考文末网盘资源获取完整代码与数据集以提升学习效率。
【电动车】【超级棒】基于蒙特卡洛模拟法的电动汽车充电负荷研究(Matlab代码实现)内容概要:本文围绕基于蒙特卡洛模拟法的电动汽车充电负荷研究展开,利用Matlab代码实现对不同类型电动汽车(如常规充电、快速充电、换电模式)在不同场景下的充电负荷进行建模与仿真。通过蒙特卡洛方法模拟大量电动汽车的充电行为,结合用户出行规律、充电时间、电量需求等随机因素,分析电动汽车规模化接入电网后对电力系统负荷的影响,并探讨分时电价策略对充电负荷的引导作用,进而优化电网运行。研究涵盖充电负荷的空间分布特性、时间分布特征及对电网峰谷差的影响,旨在为电力系统规划和电动汽车有序充电管理提供理论支持和技术工具。; 适合人群:具备一定电力系统、交通工程或新能源汽车背景的研究生、科研人员及从事智能电网、电动汽车相关领域的工程技术人员。; 使用场景及目标:①用于研究大规模电动汽车接入对配电网负荷曲线的影响;②支撑分时电价、需求响应等政策制定与优化;③为充电站规划、电网调度、储能配置等提供数据支持和仿真平台;④适用于学术研究、课题复现及工程项目前期分析。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注蒙特卡洛模拟的参数设置、充电行为的概率建模过程,并尝试调整输入变量以观察负荷变化趋势,加深对电动汽车充电负荷不确定性和聚合效应的理解。

81,116

社区成员

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

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