Java报空指针异常怎么处理

这是一个MD5的工具类

 public class MD5 {

    public static String getMD5(String str){
        try{
            MessageDigest md = MessageDigest.getInstance("MD5");

            md.update(str.getBytes());

            return new BigInteger(1,md.digest()).toString(16);
        }catch(Exception e){
            e.printStackTrace();
            return null;
        }

    }
}

前台传输信息到后台

        MD5 pwd = new MD5();
        @SuppressWarnings("static-access")
        String password = pwd.getMD5(request.getParameter("password"));

然后一运行程序就报空指针异常:md.update(str.getBytes());想问问应该怎么修改

你前台传password参数了吗? request.getParameter("password") 检查一下,应该为null了

如果是参数为空这种错误 你打个断点走一下 就会找出原因的

前端的值没获取到,

 String pwd =  request.getParameter("password")
 if(pwd != null && "".equals(pwd)){
    pwd.getMD5();
 }

写错了,应该是

  String pwd =  request.getParameter("password");
 if(pwd != null && !"".equals(pwd)){
    pwd.getMD5();
 }

如果没获取到值就不走这个方法,你可以随便打印看一下。

怀疑是不是 request.getParameter("password") 没有接到值,str.getBytes() 这句抛出的空指针啊。因为我直接将str赋值为“hello” 是可以会的结果的。(5d41402abc4b2a76b9719d911017c592) 。不过那个 MD5 的 getMD5 你加了 static 是可以直接 MD5.getMD5 使用的吧。不需要new对象了。

打个断点跟踪一下就知道是哪个变量是null了。

request.getParameter("password")这个参数没值吧,页面没有name = password 的属性吧

Optional optional = new Optional((String)request.getParameter("password"));
if(!optional.isPrent()) {// 这里是判断是否为null的
return;
}
String password =pwd.getMD5(optinal.get());