在利用maven搭建项目的时候,搭建完项目,所有的配置文件都对,但是从前端访问后端java代码的时候一直报错404,检查了好久,但是发现项目配置的是没错的,并且从网上百度,但是百度得到的结果却都不是我想要的,最后发现,代码没写错,搭建maven的时候搭建错了
平常我们搭建的时候第一步:
第二步:
第三部:
这样的话我们的maven项目就创建好了,但是没有web.xml,所以还要手动生成web.xml,
这个网上有教程就不多说了,但是生成了web的话显示是这样的:
我们会发现webcontent在最外面,name如果我们配置好了以后启动Maven的话会显示找不到web.xml,所以我们把它放到main中新建一个webapp文件,放到webapp中,这样的话就不会报错找不到web.xml了。
接下来配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>Day731</display-name>
<!-- 加载配置信息 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 配置字符集过滤器 -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 加载spring mvc -->
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMVC.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- 配置监听 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>NewFile.jsp</welcome-file>
</welcome-file-list>
</web-app>
配置好后,重新启动我们的项目,但是会报错,说是找不到applicationContext.xml,但是已经全部配置好了
但是还是找不到,百度到的结果是在web.xml中配置路径的时候在classpath后面加上* 也就是
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>Day731</display-name>
<!-- 加载配置信息 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
<!-- 配置字符集过滤器 -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 加载spring mvc -->
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:springMVC.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- 配置监听 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>NewFile.jsp</welcome-file>
</welcome-file-list>
</web-app>
加上以后重新启动我们的项目,项目成功运行,能访问到页面,但是访问后端的话404就出来了,配置文件全部配好了,但是就是一直说访问不到后端
一开始我以为项目的事,后来又重新创建了一个项目,最后发现结果一样
思来想去,问题一定是在web.xml中的
又想了想webapp是我们手动创建的,项目结构没问题,但是项目如何能正确访问到webapp呢,毕竟是我们手动创建的,所以我重新创建一个简单的maven项目,项目创建完成后的结构是这样的
新创建的这个项目本身自带的webapp,所以我把之前的复制过来后,404就没了,项目里面的内容完全一样,所以应该是和我们手动创建的webapp有关的,webapp应该是和整个项目有所关联,而我们手动创建的话,没有那个关联,所以就失败了
目前只整到了这一步,希望对大家有所帮助