在运行程序的时候出现大致如下的报错:
java.lang.NullPointerException: null
at com.example.demo.aop.DemoAOP.doBefore(DemoAOP.java:66) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_171]
卡断点卡在userName:
String userName = request.getSession().getAttribute("userName").toString();
String password = (String) request.getSession().getAttribute("password");
思考后发现在session的作用域中没有userName这一变量,所以他是null,则不能使用toString()方法将其转成String,所以程序报错,解决方法是在赋值的时候使用强转型方式,也就是password变量的赋值方式,这样就算session作用域中获取到的变量为null,赋值时不会报出[classes/:na]错,并将被赋的变量值初始为null;
另外的,在if语句判断变量是否为空,常用的如:userName!=null 和 !userName.equals("")同时判断,这里的判断null和equals("")的前后执行顺序也可能出现[classes/:na]错误,解决的方法是永远将userName!=null先于!userName.equals("")执行,即if(userName!=null && !userName.equals(""))。