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

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

先放上访问失败的图片

解决使用springboot+springmvc访问jsp变成下载文件问题_第1张图片

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

解决使用springboot+springmvc访问jsp变成下载文件问题_第2张图片

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

解决使用springboot+springmvc访问jsp变成下载文件问题_第3张图片

 因为是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文件,添加以下依赖,注意加上provided,这是作用域,provided的意思是打包成war包的时候忽略这几个包,因为tomcat会跟这几个包冲突




    javax.servlet
    javax.servlet-api
    provided


    javax.servlet
    jstl
    provided



    org.apache.tomcat.embed
    tomcat-embed-jasper
    provided


    org.apache.tomcat
    tomcat-jsp-api
    provided

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


    org.springframework.boot
    spring-boot-starter-tomcat
    provided

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

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

解决使用springboot+springmvc访问jsp变成下载文件问题_第4张图片

JSP代码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




Insert title here


	

Hello World!

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变成下载文件问题_第5张图片

 

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

你可能感兴趣的:(spring)