博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将jetty嵌入到应用中的简单案例
阅读量:4330 次
发布时间:2019-06-06

本文共 2266 字,大约阅读时间需要 7 分钟。

  前面说过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("

hello jetty!

"); 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编程是非常简单和灵活的,这里只是一个最简单的案例,实际生产中还要使用很多高级的编程方式和配置

转载于:https://www.cnblogs.com/freeweb/p/5944619.html

你可能感兴趣的文章
ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
查看>>
CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析
查看>>
使用正确的姿势跨域
查看>>
AccountManager教程
查看>>
Android学习笔记(十一)——从意图返回结果
查看>>
算法导论笔记(四)算法分析常用符号
查看>>
ultraedit激活
查看>>
总结(6)--- python基础知识点小结(细全)
查看>>
亿级曝光品牌视频的幕后设定
查看>>
ARPA
查看>>
JSP开发模式
查看>>
我的Android进阶之旅------>Android嵌入图像InsetDrawable的使用方法
查看>>
Detours信息泄漏漏洞
查看>>
win32使用拖放文件
查看>>
Android 动态显示和隐藏软键盘
查看>>
raid5什么意思?怎样做raid5?raid5 几块硬盘?
查看>>
【转】how can i build fast
查看>>
null?对象?异常?到底应该如何返回错误信息
查看>>
django登录验证码操作
查看>>
(简单)华为Nova青春 WAS-AL00的USB调试模式在哪里开启的流程
查看>>