IDEA SpringMVC Tomcat 404 一网打尽 及路径问题汇总【踩坑记录】

1,078 阅读2分钟

最近在学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>