这是一个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());