springboot访问jsp页面变成直接下载?

424 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第10天,点击查看活动详情

 ​编辑

大家好,我是雄雄,欢迎关注微信公众号【雄雄的小课堂】。

前言

大家在写springboot的时候不知道你们遇没遇到过这样的问题,当我们满怀信心的在浏览器中输入:localhost://8080/default,然后回车的时候,期待的页面没有显示出来,而是浏览器将你期待的页面作为一个文件在本地下载下来了???打破砂锅问到底,今天,我们就来看看出现此问题之后怎么解决。

01

发现Bug

如前言所述,我将springboot与sringmvc以及mybatis结合的时候,出现的问题,控制器编写正常,返回的是index.jsp,在application.properties中也对页面默认的前缀后缀配置,不可能出现问题,然而运行的时候并未正常显示页面,而是将页面以文件的形式下载下来。前几天在obs中也遇到过这个问题,就是当我们将网页文件上传到obs桶里面的时候,拿着外部链接访问,没有给我们解析成页面,而是将页面直接下载下来了,请求图片也是一样的道理,直接将图片给下载下来了。

如图所示:

​编辑

02

解决Bug

出现该问题的原因我们很容易就能联想到是jsp页面解析的问题,浏览器未编译和解析jsp,导致以文件的形式加载,所以当我们访问的时候,就会变成下载。

解决该问题我们只需要在pom文件中加以下代码即可:

<!--用于解析jsp页面-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jsp-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

该依赖就是编译解析jsp页面的。