在刚刚用idea创建的spring boot 项目整合jsp时,
一直不能正常访问,报错信息如下图
There was an unexpected error (type=Internal Server Error, status=500).
根据错误提示说是返回的视图名与路径名重复,来看controller类代码
@Controller
public class HelloController {
@RequestMapping("hello")
String hello(Map<String,String> map ){
map.put("msg", "hello world this is jsp");
// model.addAttribute("msg", "hello world"); 传入参数 Model model
return "hello";
}
}
将访问路径中的hello 改为 index,重启项目,再次访问,得到Whitelabel Error Page 404错误
网上找了错误原因归类如下
1、Application启动类的位置不对.要将Application类放在最外侧,即包含所有子包
原因:spring-boot会自动加载启动类所在包下及其子包下的所有组件.
2、在springboot的配置文件:application.properties中关于视图解析器的配置问题:
spring.view.prefix/spring.view.suffix这个东西我感觉不是主要的原因,但是我又没有遇到过解决该问题使用该方法的场景
3、spring boot 不推荐使用jsp,需要导入支持jsp相关 jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
来看本项目的结构
看到结构也没有问题,
再来看application.properties配置文件
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
application.properties配置也没有问题。
再来查看pom关于支持jsp以及servlet依赖的引入也没有问题
这就奇怪了,我们再处理请求方法中加上打印日志,看是否能正常获取请求。
重启,再次访问 看到控制台打印了刚刚添加的日志,表明程序能正常获取请求,但是无法解析jsp
所以考虑是否是系统没有引入jar包,在工程左侧中external 包看到是引入了
但是在项目右侧maven project中没有看到相关jar包
所以觉得是不是,原来自己以为只要在pom文件中添加依赖保存以后,就会自动引入相关jar,看来不是这个样子
,需要刷新maven ,刷新后看到这次有了引入的jar包
重新编译、再次重启之后,访问,这次应该可以了吧,
然而现实是残酷的。得到依然恐怖的:Whitelabel Error Page
在网上看到,还有一个原因
4、idea的pom里面识别不了provided的,所以必须注释掉
然后再次重启,终于得到想要的结果。