一. java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter
解决方案:
1.看WEB-INF下面有没有lib,没有就自己创建一个
2.右键改工程,选择properties
3.再选择Deployment Assembly
4.点击add
5.选择Java Build Path Entries后点击next
6.选择Maven Dependencies后点击finish
7.点击Apply后点击OK
重启tomcat就可以了
二. Caused by: java.lang.IllegalStateException: Could not load JDBC driver class [com.mysql.jdbc.Driver]
原因: Libraires 里没有相关mysql-connector-java的jar包
解决方法: 在pom.xml 加入以下依赖项即可
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.15</version> </dependency>
三. java.lang.ClassNotFoundException: org.mybatis.spring.SqlSessionFactoryBean
原因: Libraires 里没有org.mybatis的jar包
解决方法: 在pom.xml 加入以下依赖项即可
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency>
四.mybatis报错:The alias 'xxx' is already mapped to the value 'com.demo.xxx'
经过分析,原来是因为配置文件中,mybatis指定别名时,指定的是一个包路径,而不是一个具体的类。恰巧该项目依赖的jar包中,有2个不同jar包,存在同名类,并且所在包路径的顶层是相同的,故而出现此错误。
修改方法很简单,可以修改配置文件中的包路径,或者修改其中一个类名。
五. 报警不能发现 InternalResourceViewResolver 类
原因: springmvc-config.xml 漏加 beanclass="controller.ProductController" /> //controller.ProductController 是自己编写的控制器
加好后配置如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="app18b.controller" /> <mvc:annotation-driven /> <mvc:resources mapping="/css/ **" location="/css/" /> <mvc:resources mapping="/ *.html" location="/" /> <!-- Register the bean --> <bean class="controller.ProductController" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" > <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
六. 报警 Ambiguous mapping. Cannot map 'controller.ProductController#0' method
原因 springmvc-config文件定义了一个ProductController,使用@service注解时又自动创建了一个ProductController
错误springmvc-config配置
<context:component-scan base-package="controller"/> <context:component-scan base-package="service"/> <mvc:annotation-driven/> <mvc:resources mapping="/css/ **" location="/css/"/> <mvc:resources mapping="/ *.html" location="/"/> <!-- Register the bean --> <bean class="controller.ProductController" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
修改后springmvc-config配置
<context:component-scan base-package="controller"/> <context:component-scan base-package="service"/> <mvc:annotation-driven/> <mvc:resources mapping="/css/ **" location="/css/"/> <mvc:resources mapping="/ *.html" location="/"/> <!-- Register the bean --> <!-- <bean class="controller.ProductController" /> --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
七 报错没有bean没有init()方法 .java.lang.NoSuchMethodException: domain.Category.<init>()
原因: java bean 设置了有参构造函数,导致bean 不能初始化
解决方法: 去掉构造函数的参数,或者加上一个无参构造函数
八 不能为属性:[commandName]找到setter 方法.
<div id="global"> <form:form commandName="book" action="/book_update" method="post"> <fieldset> <legend>Edit a book</legend> <form:hidden path="id" />
原因: commandName 已被淘汰
解决方法: 改用 modelAttribute 即可
九 :Spring url 格式转换错误:
警告: Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'long'; nested exception is java.lang.NumberFormatException: For input string: "book_update"]
原因: 表单form的action错误
错误的url
错误的表单
<form:form modelAttribute="book" action="book_update" method="post">
解决方法
修改action加上项目名
<form:form modelAttribute="book" action="/app19a/book_update" method="post">
正确的url
http://localhost:8080/app19a/book_list