
3.13 实战:在应用里面内嵌Jetty容器
Jetty在互联网应用中能够广泛使用的一个非常重要的原因是能够通过内嵌的方式嵌入应用中,使得应用具备独立运行的能力。这种能力使得Jetty非常适合在云环境中通过容器来部署应用。这也是Jetty被称为Servlet Engine的原因,用量代码就可以使应用具备处理HTTP请求的能力。
一般来说,Jetty可以通过两种方式嵌入应用中,接下来详细介绍。
3.13.1 Maven插件形式
在hello-servlet项目的基础上稍作修改,生成一个hello-jetty应用作为演示。
1.安装jetty-maven-plugin
在应用中需要使用Jetty的Maven插件,在pom.xml文件中添加如下依赖内容:

上述配置的含义是,内嵌Tomcat容器将启动在8080端口,应用的路径是“/”。
2.运行应用
执行如下命令以启动应用:
mvn jetty:run
成功启动后,可以看到控制台输出内容如图3-7所示。

图3-7 Jetty插件启动输出内容
启动之后,在浏览器访问http://localhost:8080/HelloServlet,应能看到如图3-8所示的响应内容。

图3-8 访问应用界面效果
3.13.2 编程方式
新建一个名为jetty-server的Maven应用来演示如何将Jetty以编程方式嵌入应用中。
1.配置POM文件
在应用中需要使用Jetty的Maven以及Servlet的接口。编辑pom.xml文件内容如下:

2.编写HelloServlet类
编写HelloServlet类代码如下:

HelloServlet类的逻辑非常简单,当客户端访问该HelloServlet时,会响应“Hello World!”字样的文本内容给客户端。
与hello-servlet项目不同的是,jetty-server项目的HelloServlet类无须加@WebServlet注解。
3.编写Application类
Application类用于启动Jetty服务器,代码如下:

其中,ServletHandler.addServletWithMapping方法将“/HelloServlet”URL映射到了HelloServlet上。
4.运行应用
在IDE里面运行该应用之后,在浏览器访问http://localhost:8080/HelloServlet,应能看到如图3-9所示的响应内容。

图3-9 访问应用界面效果