今天在写springboot项目的时候遇到了这样一个问题,是有关注入的,报错信息如下

2020-04-07 16:24:42.675 ERROR 10384 --- [nio-8181-exec-1]o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root causejava.lang.NullPointerException: nullat com.gxuwz.assistant_demo.controller.LoginController.validLogin2(LoginController.java:24) ~[classes/:na]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_77]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_77]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_77]at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_77]at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.33.jar:9.0.33]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) [tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) [tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594) [tomcat-embed-core-9.0.33.jar:9.0.33]at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.33.jar:9.0.33]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_77]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_77]at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.33.jar:9.0.33]at java.lang.Thread.run(Thread.java:745) [na:1.8.0_77]

我们看一下我的代码:

LoginController

@RestController
@RequestMapping("/login")
public class LoginController {LoginService loginService;//登录校验加角色@GetMapping("/validLogin/{username}/{password}/{type}")public String validLogin2(@PathVariable("username") String user_id,@PathVariable("password") String password,@PathVariable("type") Integer type) {//根据username和password和type查询是否存在该用户String str = loginService.findByUserIdAndPasswordAndRoleId(user_id,password,type);//如果登录的用户角色是技术员,虽然用户名密码输入正确但是他选择的是实验室助理那么就返回falseif(str!=null) {return "success";}else {return "error";}}
}

LoginService

public interface LoginService {//登录校验public String findByUserIdAndPasswordAndRoleId(String user_id,String pwd,Integer role_id);}

LoginServiceImpl

public class LoginServiceImpl implements LoginService {@AutowiredLoginRepositoryDao loginRepositoryDao;@Overridepublic String findByUserIdAndPasswordAndRoleId(String user_id, String pwd, Integer role_id) {return loginRepositoryDao.findByUserIdAndPasswordAndRoleId(user_id,pwd,role_id);}}

LoginRepositoryDao

public interface LoginRepositoryDao extends JpaRepository<SysUser,String> {//登录校验@Query(value = "select a.user_id from sys_user a,sys_user_role b where a.user_id = b.user_id and a.user_id = ? and a.password = ? and b.role_id = ?",nativeQuery = true)public String findByUserIdAndPasswordAndRoleId(String user_id,String pwd,Integer role_id);
}

出错的主要原因就是在LoginController中没有注入Service
那么怎么注入呢?
就要用到@Service()这个注解还有@Autowired这个注解
那么他们分别放到哪呢?怎么用呢?

1.@Service()放到Service接口的实现类上面
默认情况下注入的是Service接口名第一个字母小写loginService,如果你想自定义一个名字,那么你就要这样写@Service(“abc”),我这里自定义名字是abc。这里重点说明一下,如果你设置了自定义名字,那么你在Controller层引入的时候就要定义为LoginService 自定义的名字,并且在上方加上@Autowired这个注解

2.@Autowired放到Controller中要引入的Service的定义上方

看一下实例代码:我没有使用自定义的名字而使用默认的

LoginController

@RestController
@RequestMapping("/login")
public class LoginController {@AutowiredLoginService loginService;//登录校验加角色@GetMapping("/validLogin/{username}/{password}/{type}")public String validLogin2(@PathVariable("username") String user_id,@PathVariable("password") String password,@PathVariable("type") Integer type) {//根据username和password和type查询是否存在该用户String str = loginService.findByUserIdAndPasswordAndRoleId(user_id,password,type);//如果登录的用户角色是技术员,虽然用户名密码输入正确但是他选择的是实验室助理那么就返回falseif(str!=null) {return "success";}else {return "error";}}
}

LoginServiceImpl

@Service()
public class LoginServiceImpl implements LoginService {@AutowiredLoginRepositoryDao loginRepositoryDao;@Overridepublic String findByUserIdAndPasswordAndRoleId(String user_id, String pwd, Integer role_id) {return loginRepositoryDao.findByUserIdAndPasswordAndRoleId(user_id,pwd,role_id);}}

再说明一下,如果你没使用@Service这个注解
那么你在LoginService上使用@Autowired会报错的,亲测

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request p相关推荐

  1. Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception

    Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Filtered ...

  2. Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Could not

    Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Could not ...

  3. Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Filtered

    首先报错内容 2021-11-27 17:28:54.955 ERROR 6668 --- [nio-7399-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet ...

  4. 严重: Servlet.service() for servlet [springmvc] in context with path [] threw exception [Request proce

    报错信息: 严重: Servlet.service() for servlet [springmvc] in context with path [] threw exception [Request ...

  5. Java项目运行报异:严重: Servlet.service() for servlet [e3-manager] in context with path [] threw exception [R

    Java项目中运行报错,错误如下: 严重: Servlet.service() for servlet [e3-manager] in context with path [] threw excep ...

  6. Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.LinkageError

    启动maven的web项目时报错: Servlet.service() for servlet [jsp] in context with path [] threw exception [java. ...

  7. Servlet.service() for servlet [jsp] in context with path [/ ] threw exception [An exception]解决办法

    踩坑随手记 最近在改之前做的一个课设,改着改着出问题了,而且是之前没出过的问题 eclipse报了个500(500大家都懂,铁打的500流水的报错)但是后面的服务器问题我是第一次见 console报的 ...

  8. 严重: Servlet.service() for servlet [jsp] in context with path [/maven_test7] threw exception [Unable

    严重: Servlet.service() for servlet [jsp] in context with path [/maven_test7] threw exception [Unable ...

  9. Servlet.service() for servlet [jsp] in context with path [/loginWeb_mvc] threw exception

    这个错误,一般是jsp页面中的某个对象没获取到后台传来值,导致空指针,注意下判空后使用等.其他的问题遇到了再总结到这里. 三月 06, 2020 3:36:27 下午 org.apache.catal ...

最新文章

  1. UICountingLabel实现数字变化的动画效果-b
  2. Linux Cpu 利用率计算
  3. ORA-00376: file X cannot be read at this time 问题解决
  4. 计算机网络学习笔记(6. 多路复用)
  5. 《学习OpenCV3》第10章 滤波与卷积
  6. android 内嵌web,Android《内嵌浏览器-WebView》
  7. 摩西十诫 摩西简介 世界宗教图谱
  8. uefi启动服务器系统安装win7系统教程,uefi引导gpt安装win7教程
  9. 悲剧!Google华裔“网红”炫耀公司福利,突然被裁了!
  10. 佐治亚理工计算机科学录取,佐治亚理工大学计算机科学硕士申请条件及案例分享...
  11. 前端开发练习——包含了计时功能的动画时钟
  12. LaTeX中的特殊字符
  13. 如何使linux用户下次登录强制修改密码
  14. 老生常谈:让软件留下临终遗言并优雅地关闭
  15. c语言imagesize怎么用里面的参数如何填写,【学习笔记】【C语言】sizeof
  16. 瞬间把自己家里的ipad或华为平板、手机变成电脑副屏
  17. 历史遗留问题ms解决掉了
  18. Blender 建模 - 制作一个茶几
  19. 针对TEXworks使用bibtex仍无法出现参考文献格式的解决方法
  20. 数商云采购管理系统解决方案:助力企业采购平台数字化转型

热门文章

  1. 头号音频对齐插件 VocAlign Project 5 发布
  2. SqlServer处于恢复挂起状态
  3. 对比两个Json对象是否一致
  4. selenium+python上传文件(Button按钮)
  5. 软件测试常用工具(附下载地址)
  6. Python+Vue计算机毕业设计校园旧物交易系统iv9w4(源码+程序+LW+部署)
  7. 计算机学院早操规定,通知公告|南京邮电大学早操管理规定(暂行)
  8. 一条sql是如何执行的
  9. NuGet安装Spire.OCR
  10. Swordfish -- SOA运行时框架