关于空指针的产生原因和解决办法(2)

发布时间:2021-06-06

代码段1:

out.println(request.getParameter("username"));

分析:代码段1的功能十分简单,就是输出用户输入"username"的值。

说明:看上去,上面的语句找不出什么语法错误,而且在大多数情况下也遇不到什

么问题。但是,如果某个用户在输入数据时并没有提供表单 域"username" 的值,或通过某

种途径绕过表单直接输入时,此request.getParameter("username")的值为空(注意不是空字符

串,是空对象 null。),out对象的println方法是无法直接对空对象操作的,因此代码段1所

在的JSP页面将会抛出 "ng.NullPointerException"异常。而且即使对象可能为空时,也

调用ng.Object或 Object对象本身的一些方法如toString(), equal(Object obj)等操作。

代码段2:

String userName = request.getParameter("username");

If (userName.equals("root"))

{....}

分析:代码段2的功能是检测用户提供的用户名,如果是用户名称为"root"的用户时,

就执行一些特别的操 作。

说明:在代码段2中,如果有用户没有提供表单域"username"的值时,字符串对象

userName为null值,不能够将一个null的对象与另一 个对象直接比较,同样,代码段2所

在的JSP页面就会抛空指针错误。

一个小技巧:如果要把某个方法的返回值与常量做比较,把常量放在前面,可以避免调用

null对象的equals方法。譬如:

If ("root".equals(userName))

{....}

即使userName对象返回了null对象,这里也不会有空指针异常,可以照常运转。

代码段3:

String userName = session.getAttribute("ername").toString();

分析:代码段3的功能是将session中ername的值取出,并将该值赋给字

符串对象userName。

说明:在一般情况下,如果在用户已经进行某个会话,则不会出现什么问题;但是,

如果此时应用服务器重新启动,而用户还没有重新登录,(也可能是用户关闭浏 览器,但是

仍打开原来的页面。)那么,此时该session的值就会失效,同时导致session中的

ername的值为空。对一个 为 null的对象的直接执行toString()操作,就会导致系

统抛出空指针异常。

代码段4:

public static void main(String args[]){

关于空指针的产生原因和解决办法(2).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219