Spring Boot调用JSP文件时出现404错误求助
解决Spring Boot中JSP访问404问题的方案
针对控制器映射正常但JSP返回404的问题,可按照以下步骤逐一排查解决:
1. 完善依赖配置
仅添加tomcat-jasper不足以支持JSP,需补充JSTL依赖,并切换为war打包方式(Spring Boot对JSP的jar包支持有限,war包更适配)。更新pom.xml如下:
<!-- 基础Web依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- JSP编译依赖 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <!-- JSTL标签库依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!-- 修改打包方式为war --> <packaging>war</packaging>
2. 配置视图解析器
在src/main/resources/application.properties中添加视图解析规则,让Spring准确定位JSP文件:
# JSP文件存放路径前缀 spring.mvc.view.prefix=/WEB-INF/jsp/ # JSP文件后缀 spring.mvc.view.suffix=.jsp
3. 调整JSP文件位置
按照配置的前缀路径,将JSP文件放在指定目录下,目录结构示例:
src └── main ├── webapp │ └── WEB-INF │ └── jsp │ └── LoginPage.jsp └── java └── AEINTech.CO.DevicesManager
4. 修改控制器返回值
去掉返回字符串中的.jsp后缀,让视图解析器自动拼接前缀和后缀:
@Controller public class UsersLoginController { @RequestMapping("/r") public String users() { // 仅返回视图名称,解析器会自动拼接为/WEB-INF/jsp/LoginPage.jsp return "LoginPage"; } @RequestMapping(value = {"/rr"}) @ResponseBody public String userse() { return "LoginPage"; } }
5. 验证启动方式
- IDE启动:直接运行
DevicesManagerApplication的main方法 - 打包后启动:执行
java -jar xxx.war命令,访问http://127.0.0.1:44444/r即可加载JSP页面
内容的提问来源于stack exchange,提问作者Abdelrahman Nassar
相关产品推荐
相关产品推荐

