spring 报错

  一. 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

 

posted @ 2019-04-24 00:11  江期玉  阅读(751)  评论(0编辑  收藏  举报