Spring Boot访问JSP页面返回404错误无法渲染问题求助
问题修复方案
核心根因说明
你当前日志出现ResourceHttpRequestHandler Path with "WEB-INF" or "META-INF"警告,是因为Spring Boot未配置JSP视图解析器,将返回的视图名称当成静态资源进行检索,导致404错误。其余多为代码细节错误,修复方案如下:
1. 新增JSP相关依赖及视图配置
Spring Boot默认不支持JSP渲染,需先补充必要依赖并配置视图规则:
- 若使用Maven管理依赖,在
pom.xml中添加如下依赖:
<!-- Tomcat 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>
- 在
src/main/resources/application.properties中添加JSP视图解析配置:
# JSP文件所在路径前缀 spring.mvc.view.prefix=/WEB-INF/views/ # JSP文件后缀 spring.mvc.view.suffix=.jsp
2. 修复Controller代码错误
- 修正类名拼写错误:
StudentConttroller改为StudentController - 修正重复路径映射:两个
@GetMapping("/student/add")冲突,处理表单提交的add方法注解改为@PostMapping("/student/add") - 修正重定向路径:现有重定向地址
redirect:/student/home无对应映射,可统一给Controller类添加@RequestMapping("/student")前缀,同时将list方法的@GetMapping("/home")保留,即可对应/student/home路径 - 修正视图变量名:Controller中存入Model的变量名为
listStudent,需和JSP中读取的变量名统一,修改为model.addObject("listStudents", studentList)即可匹配JSP中的${listStudents}
3. 修复JSP代码错误
- 修正实体属性读取:Student实体无
name属性,将<c:out value="${student.name}" />改为<c:out value="${student.firstname} ${student.lastname}" /> - 修正操作链接:直接使用已声明的
editURL和deleteURL变量,修改为:
<a href="${editURL}">Edit</a> <a href="${deleteURL}" onclick="return confirm('确定要删除该记录吗?')">Delete</a>
4. 可选优化:清理启动类冗余注解
@SpringBootApplication默认会扫描启动类所在包及其子包的所有组件,若你的启动类放置在项目根包下,可删除额外添加的@ComponentScan、@EntityScan注解,避免手动配置的扫描路径出错。
所有修改完成后重启项目,访问http://localhost:8282/student/home即可正常渲染JSP页面。
内容的提问来源于stack exchange,提问作者Alpheus
相关产品推荐
相关产品推荐

