Java Web 学习笔记之八:嵌入式web服务器Jetty的基本使用

Java Web 学习笔记之八:嵌入式web服务器Jetty的基本使用

简介

Jetty 是一个开源的servlet容器,具有易用性,可扩展性,易嵌入性等特点。通过少量的代码,开发者就可以在程序中以嵌入的方式运行一个web服务器。

使用

方式一(直接在代码中定义web应用的上下文)

新建maven工程,pom下的依赖如下图

编写自定义的一个Servlet类,用来测试,如下图

编写程序入口类main方法,如下图

项目目录结构如下图

以上三个步骤之后就可以运行main方法启动程序了,可以看到控制台输出


说明Jetty服务器启动成功了。

测试

下面测试一下刚才编写的BaseServlet,它的URL在main方法的配置中定义为”/base”,可以看到结果如下:

说明Jetty成功将请求转发给了自定义的servlet。

方式一的main方法代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Main {
private static String host;
private static String port;

public static void main(String[] args) throws Exception {
host = "127.0.0.1";
port = "9681";
InetSocketAddress address = new InetSocketAddress(host, Integer.parseInt(port));
// 新建web服务器
Server server = new Server(address);
// 添加自定义的Servlet
ServletContextHandler handler = new ServletContextHandler();
handler.addServlet(BaseServlet.class, "/base");
server.setHandler(handler);

// 启动web服务器
server.start();
}
}

方式二(利用web.xml配置文件定义web应用的上下文)

新建maven工程,pom的依赖同方式一

编写自定义的BaseServlet,定义方式同方式一

编写web.xml配置文件(WebContent/WEB-INFO/),如下图:

编写程序入口类main方法,如下图

项目目录结构如下图:

测试

运行main方法,并打开浏览器请求BaseServlet的URL,结果如下:

说明Jetty容器成功启动并将请求转发给了自定义的servlet。

方式二的main方法代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Main {
private static String host;
private static String port;

public static void main(String[] args) throws Exception {
host = "127.0.0.1";
port = "9681";
InetSocketAddress address = new InetSocketAddress(host, Integer.parseInt(port));
// 新建web服务器
Server server = new Server(address);
// 配置web应用上下文
WebAppContext webAppContext = new WebAppContext();
webAppContext.setContextPath("/");
// 设置配置文件扫描路径
File resDir = new File("./WebContent");
webAppContext.setResourceBase(resDir.getCanonicalPath());
webAppContext.setConfigurationDiscovered(true);
webAppContext.setParentLoaderPriority(true);
server.setHandler(webAppContext);
// 启动web服务器
server.start();
}
}