- 前言
- 1. 视图解析器冲突
- 1.1 Thymeleaf
- 1.2 InternalResourceViewResolver
- 2. 注解冲突
出现这种错误信息
类型 异常报告 消息 Servlet[springmvc]的Servlet.init()引发异常 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 javax.servlet.ServletException: Servlet[springmvc]的Servlet.init()引发异常 org.apache.catalina.authenticator.Authenticatorbase.invoke(Authenticatorbase.java:544) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:624) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1651) org.apache.tomcat.util.net.SocketProcessorbase.run(SocketProcessorbase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748) 根本原因。
一般都是版本不兼容问题、 版本冲突问题等细节
主要还是要通过根本原因进行解析
博主列举了遇到过的根本原因并且一一分析
如果有解决不了的可私聊博主
错误信息中出现的根本原因为
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'bookServiceImp': Unsatisfied dependency expressed through field 'bookMapper'; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.thymeleaf.spring5.view.ThymeleafViewResolver] for bean with name 'viewResolver' defined in class path resource [spring-mvc.xml]; nested exception is java.lang.ClassNotFoundException: org.thymeleaf.spring5.view.ThymeleafViewResolver
看看springmvc.xml配置文件中是不是配置两个识别页面的
合并的情况就和这篇文章一样
如何放置Thymeleaf和InternalResourceViewResolver视图解析器都在同一个springmvc.xml文件中
两个合并会有错误
去掉一个即可
回顾一下这两个知识点的异同:
- Thymeleaf是解析静态html静态页面的
- InternalResourceViewResolver是可以用来解析jsp页面的
Thymeleaf当控制器方法中所设置的视图名称没有任何前缀时,此时的视图名称会被SpringMVC配置文件中所配置的视图解析器解析,视图名称拼接视图前缀和视图后缀所得到的最终路径,会通过转发的方式实现跳转,类似这种没有加前缀后缀的都是使用的ThymeleafView来进行解析的
如果使用的jsp页面,链接可以不用Thymeleaf的格式,但是路径不能使用相对路径,因为超链接使用的是绝对路径来获取,但是如果写了绝对路径,封锁住了上下文,路径就不是很灵活。为此引入了动态获取的方式,SpringMVC中默认的转发视图是InternalResourceView
1.1 Thymeleaf模板化代码为
1.2 InternalResourceViewResolver
- jsp的域对象pageContext,获取上下文的路径request.contextPath
- 如果改动了页面,jsp是可以自动更新部署的
jsp页面为
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
首页
success.jsp
springmvc.xml配置文件为
正常配置了这个,可以不用配置Thymeleaf
2. 注解冲突
查看其根本原因
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'bookController': Unsatisfied dependency expressed through field 'bookService'; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.kk.service.BookService' available: expected single matching bean but found 2: bookServiceImp,BookServiceImp
查看其注解是否有冲突的
注意到代码模块中一处配置功能类似的注解
在实现类中
在控制层面的代码
只要将其@Repository去掉即可成功


![Servlet[springmvc]的Servlet.init()引发异常的解决方法 Servlet[springmvc]的Servlet.init()引发异常的解决方法](http://www.mshxw.com/aiimages/31/530736.png)
