栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Servlet[springmvc]的Servlet.init()引发异常的解决方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Servlet[springmvc]的Servlet.init()引发异常的解决方法

目录
  • 前言
  • 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)
根本原因。


一般都是版本不兼容问题、 版本冲突问题等细节
主要还是要通过根本原因进行解析
博主列举了遇到过的根本原因并且一一分析
如果有解决不了的可私聊博主

1. 视图解析器冲突

错误信息中出现的根本原因为

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去掉即可成功

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530736.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号