IDEA下用Tomcat正常启动Spring MVC项目,但把war包放入webapps下却访问404

本文介绍了在IDEA中使用Tomcat启动Spring MVC项目正常,但将war包部署到webapps目录下出现404错误的原因。问题源于IDEA的Application Context与war包部署后的URL不一致,以及拦截器响应方法的错误。解决方案是理解并正确设置Application Context,以确保与war包部署时的路径匹配。
部署运行你感兴趣的模型镜像

IDEA下用Tomcat正常启动Spring MVC项目,但把war包放入webapps下却访问404

问题描述: 如题,自己的问题非常具有特殊性…
出错原因:

  1. 混淆了IDEA下配置的Application Context与直接部署在webapps下的项目的url的相互关系
  2. 误写了拦截器的Response方法

具体过程:
在这里插入图片描述
在IDEA下配置的tomcat的这个Application context对生成的war是没有关系的,图中是war exploded,war也是一样的。但是如果我们用IDEA来启动项目,确实通过url访问到的就是我们配置后的url。

在用IDEA启动项目后,war包并没有部署到了tomcat的webapps,而是直接在项目下生成了target,那么IDEA肯定是除了“告诉”tomcat你要deploy这个war包还有修改某些配置文件,至于修改了什么下面再讲。

如果直接把war包部署在webapps下,那么url就是 “域名/<war包的名字>”。

而如果这样,我也就不会一直报404了,中间经过了很多尝试都不奏效,最后还是学长帮我找出了问题所在(超级感谢)。

httpServletResponse.sendRedirect(httpServletRequest.getContextPath() + "/login");

如上是正确写法…而我自己写的时候并没有去获取contextPath,而是直接用了配置在IDEA中的Application Context。所以矛盾就出现了,也就出现了如题的问题描述,在IDEA下Application Context就是我写死在重定向中的url,就不会有问题,而通过war包放入webapps下的项目,它的Application Context是war包的名字,那么我重定向再去定那个写死的url自然就是404了。

说完了问题的病根和解决方法,我们还是希望部署在webapps下面的war对应的Application Context的是我们希望的那个,所以就要找到怎么修改。

好吧…暂时还没找到怎么修改…
可能需要二级url的真的不多吧?

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### 如何在本地启动 Spring MVC 项目 要在本地启动Spring MVC 项目,需要确保以下几点内容已经正确配置和实现。以下是详细说明: #### 1. 环境搭建 确保开发环境已正确安装并配置以下工具: - JDK(建议使用 JDK 8 或更高版本)[^2] - Maven 或 Gradle 构建工具,用于管理项目依赖[^3] - IDE(如 IntelliJ IDEA 或 Eclipse),方便进行代码编写和调试[^4] #### 2. 配置 Web 容器 Spring MVC 项目通常运行在个 Servlet 容器中,例如 Tomcat、Jetty 或 JBoss。以 Tomcat 为例: - 在 `pom.xml` 文件中添加对 Tomcat 的依赖(如果使用嵌入式容器)。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> ``` - 如果使用外部 Tomcat,确保将编译后的 WAR 部署到 Tomcat 的 `webapps` 目录下,并启动 Tomcat 服务[^4]。 #### 3. 配置 Spring MVC 项目 确保项目的配置文件和注解驱动功能已正确设置: - **Spring 配置文件**:在 `src/main/resources` 下创建 `application.properties` 或 `application.yml` 文件,配置项目的基本信息,例如端口号、静态资源路径等。 - **Web 配置类**:通过 Java 配置类启用 Spring MVC 功能。示例如下: ```java import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; @Configuration @EnableWebMvc public class WebConfig { // 配置拦截器、视图解析器等内容 } ``` - **控制器类**:使用 `@Controller` 和 `@RequestMapping` 注解定义请求处理逻辑。示例如下: ```java import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloController { @RequestMapping("/hello") @ResponseBody public String sayHello() { return "Hello, Spring MVC!"; } } ``` #### 4. 启动项目 - **IDE 内部启动**:在 IDE 中运行主类的 `main` 方法(如果是 Spring Boot 项目),或者通过内置的 Tomcat 插件直接启动项目。 - **WAR 部署启动**:将项目WAR 文件后,将其放置在 Tomcat 的 `webapps` 目录下,然后启动 Tomcat 服务[^4]。 #### 5. 测试访问 项目启动成功后,可以通过浏览器访问配置的 URL 地址。例如,如果项目运行在 `localhost:8080` 上,并且定义了 `/hello` 路径,则可以通过以下地址访问: ``` http://localhost:8080/hello ``` --- ### 注意事项 - 确保项目中的 `web.xml` 文件(如果存在)已正确配置,或者完全使用 Java 配置替代[^3]。 - 如果使用外部 Tomcat,注意检查项目的上下文路径是否与 Tomcat 的配置致。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值