Cart.java原代码如下:
package com.jspdev.ch6;
import java.util.HashMap;
public class Cart
{
private String userId;//用户的标识
private HashMap items;//购物车中的物品
public void addItem(String itemId,int quantity)
{
items.put(itemId,new Integer(quantity));
}
}
Cart.jsp通过如下的形式调用类如下:
cart.addItem(items[i],1);
程序出现了空指针,java.lang.NullPointerException
at com.jspdev.ch6.Cart.addItem(Cart.java:11)
at org.apache.jsp.ch6.cart_jsp._jspService(cart_jsp.java:86)
设置断点当运行到 public void addItem(String itemId,int quantity)时,程序就报错了。
修改Cart.java程序,使其单独运行,如下:
package com.jspdev.ch6;
import java.util.HashMap;
public class Cart1
{
private String userId;
private HashMap items;
public void addItem(int itemId,int quantity)
{
System.out.println("ggggggg");
items.put(itemId, quantity);
}
public static void main(String[] args) {
Cart1 cart1=new Cart1();
cart1.addItem(4,1);
}
}此时系统仍然报空指针的错误,后来发现 HashMap没有new,重新修改如下:
package com.jspdev.ch6;
import java.util.HashMap;
public class Cart1
{
private String userId;
private HashMap items;
public void addItem(int itemId,int quantity)
{
items=new HashMap();
System.out.println("ggggggg");
items.put(itemId, quantity);
}
public static void main(String[] args) {
Cart1 cart1=new Cart1();
cart1.addItem(4,1);
}
}
正常运行了。