前面说过jetty最广泛的应用是可以方便的嵌入到应用程序中,而不是作为应用服务器,下面就用最简单的demo来演示一个最简单的应用

  1、下载并导入依赖

  首先应该建立一个普通的java项目,然后把依赖包导进去

  关于依赖包的获取,第一种方式是将前面下载的jetty服务器中lib目录中的jar包导入即可

  另外是在jetty下载页面上,上面是jetty服务器的下载链接,下面可以看到程序包的下载入口:

  

  选择第一个Jetty-9进去,会看到9.x的很多版本,点进去下载最新的:

  

  下载下来之后,将plugins中的java包加入到项目classpath即可

  2、写一个demo

  首先编写一个处理器来处理web发过来的请求,TestController.java,代码如下:

import java.io.IOException;
import java.io.PrintWriter; 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.handler.AbstractHandler; public class TestController extends AbstractHandler { @Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
System.out.println(target);
response.setContentType("text/html; charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
PrintWriter out = response.getWriter();
if(target.equals("/favicon.ico")) {
System.out.println("1");
out.println("404");
} else {
System.out.println("2");
out.print("<h3>hello jetty!</h3>");
if(request.getParameter("name") != null) {
out.print(request.getParameter("name"));
}
}
} }

  准确来说这里得Controller应该是Handler,必须继承于AbstractHandler,并且重写handle方法来处理请求,可以看到这里可以直接使用Servlet的api,默认情况下jetty请求完毕以后会后台有一个/favicon.ico的请求,虽然不影响前端显示,但是为了防止后端重复处理,所以在这里进行了一次过滤

  Handler写完之后,然后写一个入口的服务来加载Handler并且启动服务,这里是JettyService.java

import org.eclipse.jetty.server.Server;

public class JettyService {
public static void main(String[] args) throws Exception {
Server server = new Server(8989);
server.setHandler(new TestController());
server.start();
server.join();
}
}

  这样一个简单的demo就写完了,直接运行main方法启动服务

  

  然后打开浏览器访问:http://127.0.0.1:8989/?name=jetty可以看到下面结果

  

  事实上这里输入/xxx?name=xxx都可以被拦截,因为target是后台得到的,所以可以针对不同的请求执行不同的处理

  后台可以看到如下输出:

  

  可以看到嵌入jetty编程是非常简单和灵活的,这里只是一个最简单的案例,实际生产中还要使用很多高级的编程方式和配置

将jetty嵌入到应用中的简单案例的更多相关文章

  1. vue.js的学习中的简单案例

    今天学习了近年来挺火的一门JS技术,叫vue.js下面是它的一个简单案例: <html> <head> <title>$Title$</title> / ...

  2. Power BI官方视频(2) Power BI嵌入到应用中的3种方法

    今天给大家介绍3种将Power BI嵌入到应用中的方法. 本文原文地址:Power BI官方视频(2) Power BI嵌入到应用中的3种方法 Power BI系列文章地址:微软Power BI技术文 ...

  3. C# 将excel表格嵌入到Word中

    C# 将excel表格嵌入到Word中 继续开扒,今天要实现的是使用C#将excel表格嵌入到Word中这个功能,将word表格导入到excel中我已经写过了,如有需要可参考我之前的文章,在开始前还有 ...

  4. BarTender如何将条码下的数字嵌入到条码中

    现今社会,在各种包装箱子.书籍.超市商品等东西上面,必不可少的绝对要数条形码或者二维码了.有时候,根据客户的需求或者其他条件限制等原因,我们需要将BarTender 2016条码下的数字嵌入到条码中. ...

  5. Nodejs进阶:如何将图片转成datauri嵌入到网页中去

    问题:将图片转成datauri 今天,在QQ群有个群友问了个问题:"nodejs读取图片,转成base64,怎么读取呢?" 想了一下,他想问的应该是 怎么样把图片嵌入到网页中去,即 ...

  6. WebIM(5)----将WebIM嵌入到页面中

    在之前的文章中,已经开发了一个简单的WebIM,但是这个WebIM是在独立的页面中的,今天发布的WebIM是一个可以嵌入到自己网页中的版本,你只需添加少量的代码,就可以在页面中嵌入一个WebIM.不过 ...

  7. 把腾讯视频嵌入到html中

    ---------------------------------------------------------------------------------------------------- ...

  8. 如何将图片嵌入到Html中

    将图片内嵌入到Html中,最好的方法就是用Base64 string.例如:<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUg ...

  9. 使用Data URL将图片嵌入到网页中

    早些时候,使用IE6浏览器,网页可以另存为mht,如果网页包含图片,那么图片也会存储到mht中. mht是微软提供的一种聚合HTML文档,它的本质其实是一个文本文件,那么我们也许会好奇,它的图片存储到 ...

随机推荐

  1. 常look的Git命令

    常用的Git命令   命令  简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply   应用补丁 git am  应用邮件格式补丁 git a ...

  2. input placeholder属性 样式修改(颜色,大小,位置)

    placeholder属性 样式修改 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  3. Git怎样撤销一次分支的合并Merge

    出现的问题: 某一天,所有的开发文件已经在development分支上,但是这时候,线上出了一个问题,需要及时修复,于是从master分支上,拉了一个bug分支,进行处理,master分支本应合并bu ...

  4. jQuery 运行机制

    1.Selector,查找元素.这个查找不但包含基于CSS1~CSS3的CSS Selector功能,还包含其对直接查找或间接查找而扩展的一些功能. 2.Dom元素的属性操作.Dom元素可以看作htm ...

  5. git 远程仓库

    1.查看当前的远程库 git remote git remote -v 2.添加远程仓库 git remote add [shortname] [url] 3.从远程仓库抓取数据 git fetch ...

  6. Linux下使用Hexo搭建github博客

    找到一篇靠谱的博客,备份一下: ---------以下原文------------------ Nodejs安装 因为hexo是基于nodejs的应用,所以要先安装nodejs才可以.我这里以Ubun ...

  7. web前端基础知识-(五)jQuery

    通过之前的学习我们已经了解了html.css.javascript的相关知识:本次我们就共同学习进阶知识:jQuery~ 一.什么是jQuery? jQuery其实就是一个轻量级的javascript ...

  8. 237. Delete Node in a Linked List

    在链接列表中删除节点. 编写一个函数来删除单链表中的一个节点(除了尾部),只提供对该节点的访问..假设链表是1 - > 2 - > 3 > 4,并给出了具有值为3的节点, 链表应该成 ...

  9. thinkphp疑难解决4

    关于文件上传所涉及到的php.ini 中的一些配置: (以当前要设置的关键字开头...) 是每个上传文件所允许的大小, 默认的 upload_max_filesize = 2M, 如果超过了2M,_P ...

  10. Java优先队列

    按照Java api的说法: java.util.PriorityQueue.PriorityQueue() Creates a PriorityQueue with the default init ...