applet servlet +url+ doget方法+getparameter("mode"),

tonybin 2002-04-02 08:29:03
我servlet中取参数时用try进行运用时为何总是有错?java.lang.NullPointerException但程序还可以继续.why?
try{
//取出用户的命令
mode=request.getParameter("mode") ;
user=request.getParameter("user") ;
//处理用户请求
if(mode.equals("logout"))
{
if(!users.exists(user))
{
sendError(response,"使用者不存在,或已退出");
}
users.addMessage(new Message("Chat",user+"已退出"));
sendResp(response,"用户已退出");
}
else if(mode.equals("poll"))
{
if(!users.exists(user))
{
sendError(response,"非法用户");
}
returnMessages(response,users.getMessages(user));
users.resetUser(user);
}
...全文
14 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ktyl2000 2002-04-05
you can use the getParameterName() method to test whether of not the request contains some parameter!!
Enumeration e=request.getParameterNamers();
while(e.hasMoreElements()){
out.print(e.nextElement());
}
回复
tonybin 2002-04-02
为什么没有人会呀?
我的问题不会很难吧?难道没有人碰到这处问题?
我只是用request.getparameter("mode")时总抛出java.lang.NullPointerException错误,但程序还可以运行,why?这种程序应如何改进?
回复
tonybin 2002-04-02
为什么没有人会呀?
我的问题不会很难吧?难道没有人碰到这处问题?
我只是用request.getparameter("mode")时总抛出java.lang.NullPointerException错误,但程序还可以运行,why?这种程序应如何改进?
回复
tonybin 2002-04-02
up
回复
chrischen79 2002-04-02
NullPointerException是最常见的exception了,原因是程序对为null的实例进行了操作。
以你程序为例,NullPointerException出在以下代码:
//取出用户的命令
mode=request.getParameter("mode") ;
user=request.getParameter("user") ;
//处理用户请求
if(mode.equals("logout"))
{
试想一下,如果发送给servlet的httpRequest里面没有参数mode和user会怎样?request.getParameter返回的是null。你用null.equals("logout"),当然会得到exception。

我建议写成if("logout".equals(mode))这样的形式,可以避免http参数不全带来的NullPointerException。或者,你提前判断需要的http参数是否齐全
回复
topbit 2002-04-02
我不明白你说的程序还可以继续是什么意思。
Servlet缺省是多线程,即一个Servlet实例出现异常,不影响其它实例。
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告