辛星jetty嵌入式开发第一篇:hello jetty

本系列教程已经上传至github,感兴趣的朋友们可以star一下,附上传送门: https://github.com/xinxing0913/jetty-embed-demo

随着微服务的流行,jetty扮演的角色也越来越重要,越来越多的人开始了解jetty和使用jetty。这里我们就来一系列的jetty嵌入式开发的教程,希望对读着朋友们有所帮助。

首先来解释一下什么叫嵌入式开发,这里和硬件没关系,我们这里的嵌入式开发指的是让jetty运行在我们的程序中。让jetty作为我们程序的一部分启动,而不是我们把自己的代码部署到jetty服务器上。

本系列的教程都是基于maven的,如果读者朋友们还不熟悉maven,可以搜索一下,基础的操作还是蛮简单的。

我们新建一个项目,然后在pom.xml中添加一下jetty-server这一个依赖项即可,不过这里为了方便朋友们操作,还是给出了所有的pom.xml文件,这里是整个pom.xml的文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mengzhidu</groupId>
    <artifactId>jetty9-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <jetty.version>9.4.7.v20170914</jetty.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>${jetty.version}</version>
        </dependency>
    </dependencies>
</project>

然后我们新建一个App类吧,代码内容如下:

package com.mengzhidu.jetty.demo.x001;

import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 最简单的应用
 * 这里我们定制了自己的处理器,即HelloHandler
 * 这个处理器输出了一段内容,然后告诉服务器说处理完成
 *
 * 这里我们为了简单,把处理器和应用类写到一个文件中
 * 在之后我们都会分开写的
 *
 * 使用方法:
 * 1.启动这里的main方法
 * 2.打开浏览器,输入localhost:8080
 */
public class App {
    public static void main(String[] args) throws Exception{
        // 我们监听的端口
        int port = 8080;
        // 新建一个服务器类,我们这里给它指定了端口
        Server server = new Server(port);
        // 设置处理器
        server.setHandler(new MyHandler());
        // 启动程序...
        server.start();
        server.join();
    }
}

/**
 * 我们自定义的handler
 * 它用于在终端输出一段文本信息
 */
class MyHandler extends AbstractHandler {

    public void handle(String s, Request request, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException {
        // 设置字符集,避免乱码
        httpServletResponse.setContentType("text/html;charset=utf-8");
        // 输出我们想要显示的问候语
        httpServletResponse.getWriter().println("hello jetty,我是辛星 ^_^");
        // 表示请求处理完成
        request.setHandled(true);

    }
}

这里我介绍一下核心概念:

  • 我们的MyHandler集成了AbstractHandler,它重写了handle()方法,它这里主要做了三件事,第一件事就是设置字符集为utf-8,第二件事就是输出一段文本信息,第三件事就是设置为请求已完成。
  • 我们创建一个Server类,这个类也是我们启动应用的类,这里我们制定了启动端口为8080,然后我们通过setHandler来设置处理器,这里使用了我们创建的MyHandler,然后我们使用server.start();和server.join();来接受用户的连接。

然后我们执行main方法启动应用,我们来通过"localhost:8080"来访问我们的应用吧,看截图:


访问页面.jpg

可以看到,我们的网页内容成功的展示了出来,至此我们的第一个jetty嵌入式应用就开发完毕了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,107评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,149评论 6 342
  • whitee阅读 1,486评论 0 2
  • 今天是一个特殊的日子,今天是我连续修炼昆达里尼瑜伽的第365天。我从最开始的一名瑜伽小白成长为现在可以带领10...
    林艾米阅读 3,875评论 0 0
  • 自杭城出发,正值高温。 经过3个多小时的飞行,在深夜抵达海拉尔,当地的温度应当在10℃上下。走出候机厅,所有人找出...
    风言无语阅读 4,447评论 0 10

友情链接更多精彩内容