最近在学SSM,新建一个小Demo初次运行时总是会报出404错误,上网差了很多博文也踩了很多坑,特此写下此文章把SpringMVC IDEA 404相关错误全部说完。
首先看一下你报404的错误界面,是以下哪一种。
第一种:配置相关错误
出现这种错误,主要就是IDEA中的project、module、library、facet、artifact、Tomcat之中的哪个地方配置出错了,导致压根找不到源目标资源。只要有一个地方配置错误就可能导致404。说实话我也很纳闷为啥IDEA要弄出这么多名词,分不清的可以看一下我的另一篇博文。下面一一说一下可能的相关错误。
1. project和library
检查JDK版本、还有项目编译输出的路径
2. module
检查module中的path,相关jar包,使用maven的同学可以略过这一步了,在此还是强烈建议使用maven,能省去很多时间与精力。 配置 modules ,其中 paths 定位到 web-inf/classes ;dependencies 加入jdk和项目 web-inf/lib。 配置 libraries ,点击 + 号,选择 java ,然后还是选择你项目的 web-inf/lib。
4. facet
配置 facets ,此步很重要,配置 web resource directories ,路径配错,就会报 404 ,一定要定位到项目根目录,也就是下面有整个项目源码的地方。 大多数的错误都是这一步出错了,再仔细检查下,web资源的文件夹有一个蓝色的圈圈,看是否和自己想的一致。
4. artifact
配置 artifacts ,此步选择第二个热部署,选择你的项目即可。这一步是将项目打成war包方便部署。
5. Tomcat
这里的路径是Tomcat启动后的默认页面。 这里的路径是项目的访问路径,一般我们习惯将moduel名作为访问路径,而热部署的尾部会加一个war_exploded,我们要去掉。 只要这几步不出错,配置就没有问题。
第二种:SpringMVC相关错误
出现这种错误说明的是项目配好了,也就是不存在上一种错误,但是SpringMVC框架的配置可能出了问题。
1. 检查一下注解写的是否有问题
2. 检查一下spring-mvc.xml配置是否有问题
3. 用maven的同学检查一下Jar包
我这里有一份比较新的坐标基本涵盖所有常用jar包(2020.1.21),可以直接复制用。
下面展示一些 内联代码片
。
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
</dependencies>