springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动

时间:2024-05-20 10:12:33

idea版本_ 2018.3_
springboot版本_ 2.2.0_
jetty版本_ jetty-distribution-9.4.21.v20190926_

1 项目搭建

1 新建一个Spring Initializr项目
2 填写项目名
3 选择web 勾选Spring Web 版本选择 2.2.0
4 新建的项目的目录结构如下
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动

5 直接点击FileuploadApplication类中的main启动,会使用内置的tomcat启动,此时访问127.0.0.1:8080会返回 Whitelabel Error Page,因为没有controller
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
6 配置一个简单的controller,FileuploadApplication类同级目录下创建controller包,配置一个最简单的controller,重启项目后可以拿到结果 “hello”
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
6 我们习惯路径加上项目名 127.0.0.1:8080/fileupload 这种
将原本的resources目录下的application.properties文件改名为 application.yml
添加以下配置后重启 就必须用 127.0.0.1:8080/fileupload 访问
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动

2 打war包

1 在Terminal窗口使用 mvn clean package 命令打包 发现生成的是jar包 而且jar包有17137kb 而且生成了一个 .original 结尾的文件
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
2 我们修改几个pom.xml配置
添加 war
build中添加 fileupload
build中注释掉 spring-boot-maven-plugin
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
3 此时再执行 mvn clean package 可以拿到 fileupload.war包
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动

3 发布

1 使用jetty最新的版本jetty-distribution-9.4.21.v20190926
2 将刚才生成的war包复制到 jetty目录下的webapps, 然后执行 java -jar start.jar 启动容器
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
3 直接报错 java.util.ServiceConfigurationError: org.apache.juli.logging.Log: Provider org.eclipse.jetty.apache.jsp.JuliLog not a subtype ,这个是因为容器跟内置的 tomcat jar包的冲突
直接在pom.xml中去掉tomcat依赖,引入jetty,然后重新用 mvn clean package命令打包 并复制到jetty 重新发布
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
4 部署没有报错 访问出现页面 但是无法得到我们的hello那个结果
页面中的 WEB-INF和 META-INF点击会报错404
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
5 回到项目的FileuploadApplication 类中 让它继承 SpringBootServletInitializer 重写configure 方法
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
6 重新打包部署 拿到正确的结果 hello
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动
springboot学习笔记(一) 从零搭建web项目并使用外部jetty容器启动