如题所述, 本文介绍如何通过 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 文件内容为:
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>iamabug</groupId>
- <artifactId>sunny</artifactId>
- <packaging>pom</packaging>
- <version>0.0.1</version>
- <properties>
- <java.version>1.8</java.version>
- <jetty.version>9.4.24.v20191120</jetty.version>
- </properties>
- <modules>
- <module>sunny-Web</module>
- <module>sunny-server</module>
- </modules>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.8.1</version>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
可以看到, 项目包含两个子模块: 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 的内容为:
- <welcome-file-list>
- <welcome-file>index.HTML</welcome-file>
- </welcome-file-list>
其实在本文这种情况, Web.xml 可以不存在或为空.
index.HTML 的内容为:
- <!DOCTYPE HTML>
- <HTML>
- <head>
- <title>
- Sunny Project
- </title>
- </head>
- <body>
- <h1>
- Sunny Project
- </h1>
- Get started on 2019-11-27.
- </body>
- </HTML>
没有什么信息量的 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
虽然页面非常的朴实, 但确实达到了预期的效果.
勤学似春起之苗, 不见其增, 日有所长
辍学如磨刀之石, 不见其损, 日有所亏
关注 [大数据学徒] , 用技术干货助你日有所长
大数据学徒
来源: http://www.jianshu.com/p/27358f93d4ca