SpringBoot的n中启动方式可以自行google/baidu,我们线上采用的是:

  1. java -Dserver.port=9999 -cp /path/xxx org.springframework.boot.loader.PropertiesLauncher

这种启动方式相对 java -jar xx.jar 的好处是jar包被解压了,形成了文件的格式,具有更好的兼容性。

操作

1、新建 META-INF 目录,将jsp数据移动到该目录下 , 最后格式如下:

  1. main tree
  2. ├── java
  3. └── com
  4. └── example
  5. └── demo
  6. ├── DemoApplication.java
  7. └── view
  8. └── CC.java
  9. └── resources
  10. ├── META-INF
  11. └── a.jsp
  12. └── application.properties

2、配置Tomcat#context

  1. @Component
  2. public class XXX implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
  3. @Override
  4. public void customize(TomcatServletWebServerFactory factory) {
  5. factory.addContextCustomizers(new TomcatContextCustomizer() {
  6. @Override
  7. public void customize(Context context) {
  8. //根据ECS/DOCKER和本地环境进行配置,这里指向jar包解压后的META-INF,绝对路径
  9. context.setDocBase("/Users/admin/open/demo/target/xx/META-INF");
  10. }
  11. });
  12. }
  13. }

3、组合拳

使用IDEA新建立一个demo项目

  1. mvn clean compile package -Pdev
  2. cd target
  3. unzip demo-0.0.1-SNAPSHOT.jar -d xx
  4. cd xx
  5. ls
  6. BOOT-INF META-INF org
  7. java -Dserver.port=9999 org.springframework.boot.loader.PropertiesLauncher
  8. #最后 curl 127.0.0.1:9999/a.jsp

你一定需要jsp访问吗

如果仅仅只是用jsp作为外部的跳转链接,那自己是大可不必的. 还有以下2种方式来进行处理

  • Controller

image.png

  • servlet

不再描述