Spring 错误信息集

[Spring MVC]未开启矩阵变量(MatrixVariable)的支持

错误信息:400 Bad Request - Missing matrix variable 'gender' for method parameter of type String

错误分析:@MatrixVariable注解的使用是不安全的,在SpringMVC中默认是关闭对其支持。

解决方法:如果要允许矩阵变量的使用,你必须把RequestMappingHandlerMapping类的removeSemicolonContent属性设置为false。该值默认是true的。可以在配置文件中,以下设置

 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
        <property name="removeSemicolonContent" value="false"/>
    </bean>
[Spring MVC]缺少依赖(与jsp有关)

错误信息:java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
解决方法:

<!-- jstl -->
    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- jstl-api -->
    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl-api</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- jstl-impl -->
    <dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>jstl-impl</artifactId>
      <version>1.2</version>
    </dependency>

[Spring MVC]缺少依赖[commons-fileupload]

错误信息Failed to introspect Class [org.springframework.web.multipart.commons.CommonsMultipartResolver] from ClassLoader [ParallelWebappClassLoader
`
错误定位

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 支持的其中一个属性,支持的最大文件大小,以字节为单位 -->
        <property name="maxUploadSize" value="100000"/>
 </bean>

分析:也许你会疑惑,以为CommonsMultipartResolver就是一个直接处理文件上传的类,但Spring MVC的底层还是servlet,所以servlet需要的jar包,Spring MVC若要调用底层的api也是需要导入相应的包,供servlet 调用。

解决方法:在pom.xml下添加以下依赖(版本号不需要相同)

<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3.1</version>
</dependency>
[Spring MVC]无法访问html文件

错误信息:The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

原因分析:dispatcherselvet默认对html文件屏蔽

解决方法:在web.xml下添加以下配置

<servlet-mapping>
       <servlet-name>default</servlet-name>
       <url-pattern>*.html</url-pattern>
</servlet-mapping>

还有另外更加值得推荐一种方法,而且前一种方法可能和静态资源缓存配置产生冲突,导致缓存配置失败。

<mvc:default-servlet-handler/>
静态资源缓存配置失败

错误原因:以下两种配置,产生冲突

 <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
<mvc:resources mapping="/static/**" location="/static/" cache-period="100000">
        <mvc:cache-control max-age="1000" cache-public="true"/>
    </mvc:resources>

推荐用以下配置取代前者

<mvc:default-servlet-handler/>
依赖冲突

错误信息:org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat]

解决方法:删除产生依赖冲突的依赖,比如导入了版本不一样的重复依赖。

redirect-view-controller不起作用

错误原因:不明,但是添加<mvc:annotation-driven/>也不起效

解决方法:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <mvc:redirect-view-controller path="/hello" redirect-url="/test" keep-query-params="true"/>

特别要注意,RequestMappingHandlerMapping必须在annotation-driven前面。

jackson依赖不兼容或缺失

问题描述:

java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

解决方法:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.5</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.5</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.5</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-jaxb-annotations</artifactId>
    <version>2.9.5</version>
</dependency>
[Spring-Boot]oracle 数据库不支持字符集

错误信息:

SQL state [99999],不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK"

解决方法:添加以下依赖

<dependency>
  <groupId>cn.easyproject</groupId>
  <artifactId>orai18n</artifactId>
  <version>12.1.0.2.0</version>
</dependency>
阿里中心仓库更新spring版本滞后
Failure to transfer org.springframework.boot:spring-boot-
starter-parent:pom:2.0.1.RELEASE from 
http://maven.aliyun.com/nexus/content/groups/public/ was 
cached in the local repository, resolution will not be 
reattempted until the update interval of alimaven has
 elapsed or updates are forced

原因:同标题
解决方法:pom文件里面改成低版本。

<parent>
   <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.4.RELEASE</version>
    <relativePath/> 
</parent>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值