Spring Boot Jar包方式支持JSP

前言

之前将传统的SpringMVC工程改成了Spring Boot并支持JSP,但不是jar包运行的方式,这次继续改造成Jar包方式支持JSP。

开始创建

pom.xml

jar



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

application.properties

server.servlet.context-path=/familydoctor-webapp
server.port=8081

logging.level.root=INFO
# 屏蔽o.a.tomcat.util.scan.StandardJarScanner : Failed to scan错误
logging.level.org.apache.tomcat.util.scan.StandardJarScanner=ERROR
# 相对路径,默认输出的日志文件名为spring.log
logging.path=log

spring.profiles.active=prod

FamilyDoctorApplication

package com.asiainfo.aigov;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class FamilyDoctorApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(FamilyDoctorApplication.class, args);
    }
    
}

页面存放目录结构

resources下面的META-INF/resources里的文件默认可以直接读取,无需额外配置ResourceHandler


目录结构

结后语

打包后执行会报以下的错误:

java.io.FileNotFoundException: file:/Users/pany/Documents/workspace/aigov/familydoctor-webapp/target/familydoctor-webapp.jar!/BOOT-INF/classes!/app.properties (No such file or directory)

这是因为使用下面的写法在IDE里是可以的,但打成JAR包后不行。

String path = this.getClass().getClassLoader().getResource(fileName).getFile();

要改成

Reader reader = new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream(fileName), "UTF-8");
properties.load(reader);

另外,用默认版本的spring-boot-maven-plugin打出来的Jar包访问JSP会报404错误,用1.4.2.RELEASE版本就没问题。

你可能感兴趣的:(Spring Boot Jar包方式支持JSP)