SpringBoot整合Jsp(6)

简介:

官方不推荐使用jsp作为页面,我们可以使用其他的模板引擎,比如 Thymeleaf 和 freemarker,官方主推的是Thymeleaf。但是目前来说,很多项目的页面还是用的jsp.而且很多现成的项目用的jsp页面,扒过来就能用,当然如果时间允许的情况,还是不建议大家使用jsp,而是采用官方推荐的模板。
springboot的框架是不建议使用jsp页面的但是, 还是可以整合的所以我就把jsp和freemarker 两者都整合一下实现了一下

一: SpringBoot Jsp

整合Jsp 就是坑啊 整的我都想吐了 当你看到这篇文章的时候恭喜你入坑了接下来带你出坑

此文主要解决以下两个问题(如果没有符合各位实际的问题的话,也没必要继续往后读了):
1、未使用Maven打包前:Spring Boot 整合JSP后,前端访问(通过Controller访问JSP)时变成下载文件。
2、使用Maven打包后:打包jar或war后独立运行,前端访问不到JSP页面(但是Controller返回其他数据正常,JSP就是不行);或者是访问到了JSP页面,但是JSP引用的静态资源无法访问。

我使用的版本

SpringBoot整合Jsp(6)

同时在pom文件设置项目打包为war:<packaging>war</packaging>添加tomcat支持和JSTL标签库

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


第二步在application.properties文件中添加前缀和后缀配置

#页面默认前缀目录 默认在webapp下有别的文件夹可以,以文件夹/往下加
spring.mvc.view.prefix=/
#页面默认后缀目录
spring.mvc.view.suffix=.jsp

第三步.建立webapp文件夹当项目设为war就可以生成了
1)
SpringBoot整合Jsp(6)
2)注意图下(5)是生成WEB-INF下的web.xml
SpringBoot整合Jsp(6)
3)目录
SpringBoot整合Jsp(6)
哪就写个jsp页面和方法测试一下

package com.xxx.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by Administrator on 2019\3\13 0013.
 */
@Controller
public class JspController {

    @GetMapping("ok")
    public  String index(Model model){

        model.addAttribute("ttt","整合JSP的大坑..........");
        return "exin";
    }

}

jsp页面
SpringBoot整合Jsp(6)
结果:
SpringBoot整合Jsp(6)
我也是简单的整合了一下 :
新手菜鸟在路上 !!!!!