Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request p
今天在写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相关推荐
- Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Filtered ...
- 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 ...
- 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 ...
- 严重: 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 ...
- 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 ...
- 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. ...
- Servlet.service() for servlet [jsp] in context with path [/ ] threw exception [An exception]解决办法
踩坑随手记 最近在改之前做的一个课设,改着改着出问题了,而且是之前没出过的问题 eclipse报了个500(500大家都懂,铁打的500流水的报错)但是后面的服务器问题我是第一次见 console报的 ...
- 严重: 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 ...
- Servlet.service() for servlet [jsp] in context with path [/loginWeb_mvc] threw exception
这个错误,一般是jsp页面中的某个对象没获取到后台传来值,导致空指针,注意下判空后使用等.其他的问题遇到了再总结到这里. 三月 06, 2020 3:36:27 下午 org.apache.catal ...
最新文章
- UICountingLabel实现数字变化的动画效果-b
- Linux Cpu 利用率计算
- ORA-00376: file X cannot be read at this time 问题解决
- 计算机网络学习笔记(6. 多路复用)
- 《学习OpenCV3》第10章 滤波与卷积
- android 内嵌web,Android《内嵌浏览器-WebView》
- 摩西十诫 摩西简介 世界宗教图谱
- uefi启动服务器系统安装win7系统教程,uefi引导gpt安装win7教程
- 悲剧!Google华裔“网红”炫耀公司福利,突然被裁了!
- 佐治亚理工计算机科学录取,佐治亚理工大学计算机科学硕士申请条件及案例分享...
- 前端开发练习——包含了计时功能的动画时钟
- LaTeX中的特殊字符
- 如何使linux用户下次登录强制修改密码
- 老生常谈:让软件留下临终遗言并优雅地关闭
- c语言imagesize怎么用里面的参数如何填写,【学习笔记】【C语言】sizeof
- 瞬间把自己家里的ipad或华为平板、手机变成电脑副屏
- 历史遗留问题ms解决掉了
- Blender 建模 - 制作一个茶几
- 针对TEXworks使用bibtex仍无法出现参考文献格式的解决方法
- 数商云采购管理系统解决方案:助力企业采购平台数字化转型