目录
HTTP状态 404 - 未找到
前言
1 问题描述
2 项目部署
2.1 项目结构
2.2 开源代码
3 解决过程:
3.1 进入项目结构
3.2 选择自定义模块输出路径
3.3 添加资源目录到项目依赖
3.4 添加导入项目的资源到outPutLayou
3.5 检查结果
4.最后总结
这里我为了熟悉SSM框架,在学习完SpringMVC后开始上手一个比较好练手的login项目,于是随便写了点代码然后运行tomcat后发现了这个资源404错误,我猜测肯定是路径的问题,后来在网上找了很多解决方法,发现都不太适应我的项目(有大佬已经总结了好多404相关的原因,比较具体看这里→:springmvc不进入Controller导致404),然后又去了解了一下tomcat,思考了几天,开始从项目结构下手,后来问题得到了解决,具体可以看我接下来的介绍:
类型 状态报告
描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。
Apache Tomcat/9.0.35
注意:这是一个典型的资源路径与类路径不匹配的问题
1.定义pojo包下的User类,然后是dao层以及数据库映射文件UserMapper.xml的配置,接下来就是service层的配置,最后就是controller层。
2.接下来我们开始配置resources资源,需要配置的有:
applicationContext.xml
Mybatis.xml
springDao.xml
UserService.xml
UserServlet.xml
3.另外,需要在web/WEB-INF目录下配置web.xml,然后编写一个简单的主页index.jsp,这个主页取决于自己的需求,当然我这里只是练练手所以简简单单写了一点,具体往下看。
需要代码查看链接去下载:https://download.csdn.net/download/qq_44140450/18815923
我这里直接上配置文件,其他java类暂时省略,请谅解,如果需要可以直接查看上面的链接下载。
2.2.1 在applicationContext.xml引入SpringMvc配置文件以及dao层和sevice层的配置文件。
2.2.2 在SpringDao.xml中配置数据源、SqlSessionFactory以及UserMapper对应得dao和mybatis工厂。
2.2.3 配置UserService.xml,扫描对应的service包。
2.2.4 配置SpringMVC配置文件UserServlet.xml
2.2.5 Mybatis.xml
2.2.6 在web.xml部署dispatcherServlet,并指定init-param加载元素为applicatiionContext.xml。
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:applicationContext.xml
1
dispatcherServlet
/
2.2.7 index.jsp,包含一个登录表单对表单元素进行简要的布局与渲染,让结构稍微合理一点。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
登录
Login
没有账号?去登录
解决问题的思路是正确匹配类路径与访问路径。
这里有两种方式:
(1)直接点击右上角的项目图标,看图:
(2)进入左上角的File菜单选择Project Structure:
进入模块选择自定义路径,我们分五步介绍:
(1)进入项目结构(Project Structure)找打Modules;
(2)单击项目loginExp_07;
(3)选择Paths;
(4)我们自定义Compoler output路径:
(5)选择之前创建项目时在web/WEB-INF/下建好的classes目录,作为类输出目录。
(6)以上步骤完成后点击Apply。
1.进入依赖选项,单击项目loginExp_07,选中Dependencies,开始导入资源到项目:
2. 选着右边的+号,弹出对话框后选中第一个选项“JARs or directories...”:
3.此时,选择我们项目下的resources目录:
4.弹出对话框后选择Classes,点击ok:
5.这样我们可以看到Dependencies目录下出现了新的项,然后apply,这样我们就添加成功了:
在完成了3.3 添加资源目录到项目依赖后,进行以下操作。
1.首先在项目结构中找到Artifacts,找到我们的
2.选中LoginExp_07后,右击鼠标弹出对话框后选择Put into /WEB_INF/classes,这里的classes为我们之前3.3节自定义的字节码输出路径,目的就是将导入到依赖的资源与类路径进行匹配,解决最终的无法通过路径访问资源的问题。
运行tomcat服务器,发现成功进入了index.jsp,并且在提交表单后跳转成功:
404资源无法访问的问题除了一部分原因是因为语法错误等,大部分是由于资源路径与类路径不匹配的问题,也就是说没有正确匹配路径,我们需要指定class输出路径和resources,然后将他们进行匹配和关联,而默认的class输出路径与resources路径会因为默认配置环境而冲突(对于部分情况来讲确实会出现此类问题),直接导致资源无法访问。所有我们直接绕开idea的默认配置主动进行配置,直接掌控资源路径与类路径,这样问题就永久解决了。