解决使用springboot+springmvc访问jsp变成下载文件问题

    之前做项目的时候用eclipse搭建springboot项目,开发前端的时候发现不能访问jsp页面时浏览器会把jsp文件下载下来,查了网上的解决方法,还是不行,折腾了很久终于解决了,记录下来希望能对踩到坑的人有所帮助。

先放上访问失败的图片

《解决使用springboot+springmvc访问jsp变成下载文件问题》

    我用的是eclipse,jdk是1.8(这个问题和jdk应该没关系),tomcat9.0,新建项目,我是直接新建spring starter project,不是maven项目

《解决使用springboot+springmvc访问jsp变成下载文件问题》

选择需要的依赖,springboot的版本是2.0.3,依赖可以根据自己的需求去添加,web依赖一定要添加,可以看到模板引擎里没有JSP的选项,spring官方不推荐使用JSP模板,具体什么原因就不知道了,选择完毕直接点击finish

《解决使用springboot+springmvc访问jsp变成下载文件问题》

 因为是spring starter project,很多东西它都帮你写好了,例如启动类、配置文件等等。

先配置src/main/resources/目录下的application.properties,配置如下

#jsp 支持
spring.mvc.view.suffix=.jsp
spring.mvc.view.prefix=/view/

#关闭默认模板引擎
#spring.thymeleaf.cache=false
#spring.thymeleaf.enabled=false

‘#’后面的是注释,添加jsp支持就行了,关闭模板引擎是从别的地方搬过来的,发现注释掉也没有影响,这是新版本springboot的配置,老版本的有些不同,可以自行百度

编辑pom.xml文件,添加以下依赖,注意加上<scope>provided</scope>,这是作用域,provided的意思是打包成war包的时候忽略这几个包,因为tomcat会跟这几个包冲突

<!--jsp支持-->
<!-- servlet 依赖. -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <scope>provided</scope>
</dependency>
<!-- tomcat 的支持.-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jsp-api</artifactId>
    <scope>provided</scope>
</dependency>

同时,给这个依赖加上作用域,否则依然会出现访问jsp变成下载文件的问题(问题应该是出现在这里了)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

后面是就是正常的添加jsp文件,写个接口,不做过多的说明,直接上代码

在webapp下新建一个view文件夹,在 view文件夹里新建一个jsp文件

《解决使用springboot+springmvc访问jsp变成下载文件问题》

JSP代码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>Hello World!</h1>
</body>
</html>

Controller代码

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestController {
	
	@RequestMapping("/test")
	public String index() {
		return "index";
	}
	
}

用tomcat启动项目,右击项目,Run As,Run On Server

访问JSP页面,访问成功

《解决使用springboot+springmvc访问jsp变成下载文件问题》

 

最后说明一下,只有用tomcat启动才能成功访问,用maven build(spring-boot:run),或者直接运行springboot启动类都是变成下载文件,欢迎各路大佬指正

    原文作者:镇魂歌
    原文地址: https://blog.csdn.net/qq_36286345/article/details/81259128
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞