您的位置:首页 > 编程语言 > Java开发

FAQ(51):SpringMVC-分层代码-java.lang.com.User.Service. UserServiceImpl.login(UserSe

2018-01-13 12:12 387 查看
看LOG:

java.lang.NullPointerException
com.User.Service.UserServiceImpl.login(UserServiceImpl.java:15)
com.User.Controller.UserController.doLogin(UserController.java:36)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


解决:空指针异常。一开始很迷惘,因为这不是逻辑问题(检查一下流程就可以解决),理解原理发现也很容易解决这个Bug,这是语法问题。

发现两处错误:

(1) @Resource
private UserService userService ;
User user = userService.login(userName,userPassword);//直接使用了

改:
@Resource
private UserService userService = new UserServiceImpl(); //创建了对象再使用
User user = userService.login(userName,userPassword);

(2) private UserDao userDao;

改:
private UserDao userDao = new UserDaoImpl();

解释:NullPointerException,即是“声明了指针(变量),却没有让它指向任何对象(没有开辟运行的内存空间),直接调用对象的方法或者属性“,从而出现Bug。

1.所谓的指针,就是java中的对象的引用。比如String s;这个s就是指针。

2.所谓的空指针,就是指针的内容为空,比如上面的s,如果令它指向null,就是空指针。

3.所谓的空指针异常,就是一个指针是空指针,你还要去操作它,既然它指向的是空对象,它就不能使用这个对象的方法。比如上面的s假如为null,你还要用s的方法,比如s.equals( String x);那么就会产生空指针异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐