【Jetty 用法总结】如何使用 WebAppContext 提供静态资源
作者: 图恩分类: 编程开发阅读: 890发布时间: 2020-04-12 23:12:08
文章首发于公众号【大数据学徒】,感兴趣请搜索 dashujuxuetu 或者文末扫码关注。
如题所述,本文介绍如何通过 Jetty 的 WebAppContext 类来提供 html 等静态资源。
内容提要:
环境说明
初始化项目
静态资源模块
Jetty 服务模块
运行效果
代码已上传至 github: https://github.com/iamabug/sunny
1. 环境说明
JDK版本:1.8
Jetty 版本:9.4.24.v20191120
开发环境:IntelliJ IDEA + Maven 插件
2. 初始化项目
新建项目 sunny,pom.xml 文件内容为:
4.0.0
iamabug
sunny
pom
0.0.1
1.8
9.4.24.v20191120
sunny-web
sunny-server
org.apache.maven.plugins
maven-compiler-plugin
3.8.1
1.8
1.8
可以看到,项目包含两个子模块:sunny-web 和 sunny-server,前者是静态资源模块,后者是 Jetty 服务模块,前者将只包含 html, css, js等类型文件,后者则包含了启动 Jetty 和配置 WebAppContext 的 Java 代码。
3. 静态资源模块
sunny-web目录结构如下:
sunny-web $ tree
.
├── pom.xml
├── src
│ ├── main
│ │ ├── resources
│ │ └── webapp
│ │ ├── WEB-INF
│ │ │ └── web.xml
│ │ ├── images
│ │ └── index.html
│ └── test
│ └── java
└── sunny-web.iml
其中 web.xml 的内容为:
index.html
其实在本文这种情况, web.xml 可以不存在或为空。
index.html 的内容为:
Sunny Project
Sunny Project
Get started on 2019-11-27.
没有什么信息量的 html。
4. Jetty 服务模块
sunny-server 模块目录结构如下:
sunny-server $ tree
.
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ │ └── iamabug
│ │ │ └── ServerMain.java
│ │ └── resources
│ └── test
│ └── java
└── sunny-server.iml
ServerMain.java 的内容为:
package iamabug;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
public class ServerMain {
public static void main(String[] args) throws Exception {
// 创建 Server 对象
Server server = new Server(12345);
// 创建 WebAppContext 对象
WebAppContext context = new WebAppContext("./sunny-web/src/main/webapp", "/");
// 绑定
server.setHandler(context);
// 启动
server.start();
server.join();
}
}
代码逻辑非常清晰,首先创建一个 Server 对象,然后创建一个 WebAppContext 对象,这个对象接收发往 / 的请求,webapp 目录为 sunny-web 模块下的 webapp 目录,将以上两个对象绑定,然后启动 Server,结束。
5. 运行效果
启动 ServerMain 主函数,在浏览器访问 http://localhost:12345,运行效果为:
截屏2019-11-29下午5.15.22.png
虽然页面非常的朴实,但确实达到了预期的效果。
勤学似春起之苗,不见其增,日有所长
辍学如磨刀之石,不见其损,日有所亏
关注【大数据学徒】,用技术干货助你日有所长
大数据学徒