Jetty 嵌入式之 HelloWorld

本节提供一个教程,演示如何快速开发针对Jetty API的嵌入式代码。

1. 下载 Jar 包

Jetty被分解为许多jar和依赖项,通过选择最小的jar集来实现最小的占用空间。 通常最好使用像Maven这样的东西来管理jar,但本教程使用一个聚合Jar,它包含一个Jar中所有必需的Jetty类。 您可以使用curl或浏览器手动下载聚合jetty-all.jar。

注意:中央Maven仓库已经开始积极拒绝/拒绝从wget命令行工具访问存储库(由于某些组滥用该工具)。 中央maven存储库的管理员已经声明推荐的命令行下载工具现在是 curl 。

重要:本节中引用的jetty-all jar仅用于示例目的,不应在此之外使用。 请考虑使用Maven来管理项目依赖项。

使用 curl 如下所示:

> mkdir Demo
> cd Demo
> curl -o jetty-all-uber.jar https://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/9.4.12-SNAPSHOT/jetty-all-9.4.12-SNAPSHOT-uber.jar

2. 写一个 HelloWorld 示例

Embedding Jetty部分包含许多针对Jetty API编写的示例。 本教程使用一个简单的HelloWorld处理程序和一个main方法来运行服务器。 您可以在编辑器中下载或创建具有以下内容的文件HelloWorld.java:

//
// ========================================================================
// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
//
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
//
// You may elect to redistribute this code under either of these licenses.
// ========================================================================
// package org.eclipse.jetty.embedded; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler; public class HelloWorld extends AbstractHandler
{
@Override
public void handle( String target,
Request baseRequest,
HttpServletRequest request,
HttpServletResponse response ) throws IOException,
ServletException
{
// 声明 response 编码和类型
response.setContentType("text/html; charset=utf-8"); // 声明 response 状态码
response.setStatus(HttpServletResponse.SC_OK); // 写入 response 内容
response.getWriter().println("<h1>Hello World</h1>"); // 通知 jetty 这个请求已经被处理过
baseRequest.setHandled(true);
} public static void main( String[] args ) throws Exception
{
Server server = new Server(8080);
server.setHandler(new HelloWorld()); server.start();
server.join();
}
}

3. 编译Hello World示例

以下命令编译HelloWorld类:

> mkdir classes
> javac -d classes -cp jetty-all-uber.jar HelloWorld.java

4. 运行 Handler 和 Server

以下命令运行HelloWorld示例:

> java -cp classes:jetty-all-uber.jar org.eclipse.jetty.embedded.HelloWorld

您现在可以在浏览器地址栏输入 http:// localhost:8080 以查看您的 hello world 页面。

下一节:Jetty 开发指南:(2)Jetty 内嵌开发

参考资料:http://www.eclipse.org/jetty/documentation/9.4.x/advanced-embedding.html#jetty-helloworld

Jetty 开发指南: 嵌入式开发之HelloWorld的更多相关文章

  1. Jetty 开发指南:Jetty 内嵌开发

    Jetty的口号是“不要在Jetty中部署你的应用程序,在你的应用程序中部署Jetty!” 这意味着,作为将应用程序捆绑为要部署在Jetty中的标准WAR的替代方案,Jetty旨在成为一个软件组件,可 ...

  2. Jetty使用教程(四:21-22)—Jetty开发指南

    二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...

  3. Jetty使用教程(四:23)—Jetty开发指南

    二十三.Maven和Jetty 这一章节将说明如何通过Maven管理Jetty和使用Jetty的Maven插件. 23.1 使用Maven Apache Maven是一个款软件项目管理工具.基于项目对 ...

  4. 嵌入式开发之zynq——赛灵思的一款两a9加一fpga芯片的开发板

    没办法,回家入职新公司,做通信的,用到这款zynq加ad9163射频架构的开发版,要我做驱动,这可是初次接触zynq,带fpga的集成芯片,心里还是有点惊喜和忧愁,忧愁怎么最快啃下这个硬骨头,好吧上网 ...

  5. Jetty 开发指南:嵌入式开发示例

    Jetty具有嵌入各种应用程序的丰富历史. 在本节中,我们将向您介绍我们的git存储库中的embedded-jetty-examples项目下的一些简单示例. 重要:生成此文档时,将直接从我们的git ...

  6. 嵌入式开发之zynq——zynq开发环境搭建

    http://blog.csdn.net/shushm/article/details/51728690 http://www.cnblogs.com/fpga/p/4593602.html http ...

  7. Jetty使用教程(四:24-27)—Jetty开发指南

    二十四.处理器(Handler ) 24.1 编写一个常用的Handler Jetty的Handler组件用来处理接收到的请求. 很多使用者不需要编写Jetty的Handler ,而是通过使用Serv ...

  8. 嵌入式开发之NorFlash 和NandFlash

    http://blog.csdn.net/tigerjibo/article/details/9322035 [摘要]:作为一个嵌入式工程师,要对NorFlash 和NandFlash要有最起码的认知 ...

  9. 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102

    1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScale+  MPSoC架构 Xilinx新一代Zynq针对控制.图像和网络应用推出了差异化的产品系,这 ...

随机推荐

  1. “崩溃了?不可能,我全 Catch 住了” | Java 异常处理

    前言 今天我们来讨论一下,程序中的错误处理. 在任何一个稳定的程序中,都会有大量的代码在处理错误,有一些业务错误,我们可以通过主动检查判断来规避,可对于一些不能主动判断的错误,例如 RuntimeEx ...

  2. Python的垃圾回收机制(引用计数+标记清除+分代回收)

    一.写在前面: 我们都知道Python一种面向对象的脚本语言,对象是Python中非常重要的一个概念.在Python中数字是对象,字符串是对象,任何事物都是对象,而它们的核心就是一个结构体--PyOb ...

  3. VulDeePecker:基于深度学习的脆弱性检测系统

    最近的两款软件,VUDDY和VulPecker,假阴性率高而假阳性率低,用于检测由代码克隆引发的漏洞.而如果用于非代码克隆引起的漏洞则会出现高误报率. 本文使用深度学习处理程序中的代码片段,不应由专家 ...

  4. openlayers4 入门开发系列之地图空间查询篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  5. Centos 配置开机启动脚本启动 docker 容器

    Centos 配置开机启动脚本启动 docker 容器 Intro 我们的 Centos 服务器上部署了好多个 docker 容器,因故重启的时候就会导致还得手动去手动重启这些 docker 容器,为 ...

  6. sublime text 3 无法安装Package Control插件解决办法

    sublime text 3 无法安装Package Control插件解决办法 ***关于sublime text 3 常用的 Package Control插件的安装方法*** 1.CTRL+` ...

  7. Chrome启动后打开第一个网页很慢的解决方案

    Chrome启动后打开第一个网页很慢的解决方案 Chrome/Chromium以速度快著称,最近每当打开chrome的时候,打开第一个页面都非常慢,往往需要数十秒的时间,经分 析,应该是卡在了域名解析 ...

  8. java中强大的免费的集成开发环境(IDE)eclipse的使用技巧及注意事项

    1调整字体,window->prefernce->Appereance->colors and fonts->Basic->Text font双击即可进行编辑 2.设置行 ...

  9. 如何用GoldWave批量删除mp3文件开头65秒?

    具体操作如下: 一.打开goldwave--文件--批处理 二.批处理设置:     添加需处理的文件或文件夹(右侧)         1.转换:设置转换格式.         2.处理:       ...

  10. Jmeter入门篇

    下载Jmeter:http://jmeter.apache.org/download_jmeter.cgi 安装后双击bin目录下的jmeter.bat文件启动jmeter 先看下怎么创建一个测试计划 ...