vertx由于性能较高,逐渐变得流行。下面将一个vertx的入门案例。

添加依赖

        <!-- vertx -->
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-web</artifactId>
<version>3.5.0</version>
</dependency>

1:创建一个vertical,能够对url进行拦截

package payItem.main;

import java.util.HashMap;
import java.util.Map; import com.yiji.openapi.tool.fastjson.JSON; import io.vertx.core.AbstractVerticle;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.http.HttpMethod;
import io.vertx.core.json.Json;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler; public class AutoAccountVerticle extends AbstractVerticle{ public void start(){
Router router=Router.router(vertx);//创建路由
router.route().handler(BodyHandler.create()); //处理请求体body
router.route("/autoAccount").handler( //拦截url
ctx -> { //上下文
String username=ctx.request().getParam("username"); //获得请求中的参数
String password=ctx.request().getParam("password");
JsonObject jo=new JsonObject();
jo.put("username", username).put("password", password); //将参数转化为json数据,添加到JsonObject vertx.eventBus().<JsonObject> send( //事件总线,交由处理程序处理,这次请求
AutoAccountService.AUTO_ACCOUNT_SERVICE_URL, //处理程序的url
jo, //传递给处理程序的消息体,只能是基本数据类型或者JsonObject类型
result -> { //返回结果
if(result.succeeded()){
System.out.println(""+result.result().replyAddress());
ctx.response() //对前台的响应。
.putHeader("content-type", "application/json")
.end("JSON_CB(Json.encodePrettily(result.result().body()))"); //返回jsonP数据。
// .end(Json.encodePrettily(result.result().body())); //返回json数据。
}else{
ctx.response().setStatusCode(400)
.end(result.cause().toString());
}
}
); });
vertx.createHttpServer().requestHandler(router::accept).listen(8080);
} }

2:创建处理事件

package payItem.main;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Future;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject; /**
* 处理程序
* @author admin
*
*/
public class AutoAccountService extends AbstractVerticle { private SQLClient sqlClient;
public static String AUTO_ACCOUNT_SERVICE_URL="AUTO_ACCOUNT_SERVICE_URL"; public void start(){ vertx.eventBus().consumer(AUTO_ACCOUNT_SERVICE_URL, //处理的URL
msg -> {//接收的消息
JsonObject jo=(JsonObject) msg.body();
System.out.println(jo); //处理请求消息
msg.reply(jo); //返回的消息,给result。
}
);
}
}

3:在主函数中发布verticle,每个verticle,都能成为一个服务,只需添加vertx.createHttpServer().requestHandler(router::accept).listen(8080)即可,这样里面就可以设置路由功能。

但是带有主函数的verticle只能有一个

package payItem.main;

import io.vertx.core.Vertx;

public class AutoAccountMain {

    public static void main(String[] args) {
Vertx vertx=Vertx.vertx();
vertx.deployVerticle(new AutoAccountService());
vertx.deployVerticle(new AutoAccountVerticle());
}
}

4:访问:http://localhost:8080/autoAccount?username=1&passward=2

浏览器显示:

JSON_CB(Json.encodePrettily(result.result().body()))

从浏览器输入参数,到后台处理的vertx程序的更多相关文章

  1. 浏览器输入一个url到整个页面显示出来经历了哪些过程?

    https://cloud.tencent.com/developer/article/1396399 https://www.cnblogs.com/haonanZhang/p/6362233.ht ...

  2. [网络] 在浏览器输入URL回车之后发生了什么

    目录 一  前言 二  URL解析 三  DNS域名解析 1  IP 地址 2  什么是域名解析 3  浏览器如何通过域名去查询 URL 对应的 IP 呢 4  小结 四  建立连接 1  TCP三次 ...

  3. Chrome浏览器启动参数大全(命令行参数)

    前言 在开发Web项目当中,浏览器必不可少,而浏览器的启动参数可以帮我们实现很多功能. 常用参数 常用参数请参考下表. 序号 参数 说明 1 --allow-outdated-plugins 不停用过 ...

  4. 阿里云提示:对输入参数id未进行正确类型转义,导致整型注入的发生

    类似以下提示: XXX.php中,对输入参数id未进行正确类型转义,导致整型注入的发生 解决办法: 找到对应文件:$id = $_GET['id']; 增加以下标红过滤: $id = $_GET['i ...

  5. riot.js教程【三】访问DOM元素、使用jquery、mount输入参数、riotjs标签的生命周期

    前文回顾 riot.js教程[二]组件撰写准则.预处理器.标签样式和装配方法 riot.js教程[一]简介 访问DOM元素 你可以通过this.refs对象访问dom元素 而且还有大量的属性简写方式可 ...

  6. 天龙八步&quot;细说浏览器输入URL后发生了什么

    本文摘要: 1.DNS域名解析: 2.建立TCP连接: 3.发送HTTP请求: 4.服务器处理请求: 5.返回响应结果: 6.关闭TCP连接: 7.浏览器解析HTML: 8.浏览器布局渲染: 总结 输 ...

  7. 【转】浏览器输入URL后发生了什么

    转自:http://www.cnblogs.com/webdeve/p/7865520.html本文摘要: 输入网址 当我们在浏览器输入网址并回车后,一切从这里开始. 一.DNS域名解析 我们在浏览器 ...

  8. “天龙八步”细说浏览器输入URL后发生了什么

    本文摘要: 1.DNS域名解析: 2.建立TCP连接: 3.发送HTTP请求: 4.服务器处理请求: 5.返回响应结果: 6.关闭TCP连接: 7.浏览器解析HTML: 8.浏览器布局渲染: 总结 输 ...

  9. 从浏览器输入URL回车发生了什么

    在浏览器输入url后回车,整个过程发生了什么?整个过程如果节节细述的话,那非常的复杂.我就简单的描述一下整个过程 1.查询DNS,获取域名对应的IP地址 (1).浏览器搜索自身的DNS缓存 (2).搜 ...

随机推荐

  1. windows“启动”对应的路径

    C:\Users\huangye\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

  2. c++ 友元类 与 友元类派生类

    定义: 当一个类B成为了另外一个类A的“朋友”时,那么类A的私有和保护的数据成员就可以被类B访问.我们就把类B叫做类A的友元. 用法: 在A类中加入: friend class B; 下面这个程序说明 ...

  3. 【Mybatis】Mybatis基本构成

    SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口) SqlSessionFactory:依靠工厂来生成SqlSes ...

  4. JavaScript 中的 Map

    很多编程语言中都有类似Map这种 键-值对 的数据结构. 可惜,JavaScript没有. 幸运的是,可以自己构建一个Map对象. 对象的定义 <script type="text/j ...

  5. sencha touch list ListPaging使用详解

    示例代码: Ext.define('app.view.message.List', { alternateClassName: 'messageList', extend: 'Ext.List', x ...

  6. 安装ORACLE_RAC遇到的问题与解决方法

    while running: /u01/app/oracle/product/10.2.0/db_1/root.sh Checking to see if Oracle CRS stack is al ...

  7. 实战BRTSvc一款我见过的最嚣张的挖矿软件

    第一步:发现告警 Suricata发现特征字符串jsonrpc,这个是匹配挖矿木马的一个重要特征.于是开始分析告警信息: 告警中可以提取出的有效信息如下: 目标IP:149.28.199.108 目标 ...

  8. 下载Google Play外国区APP技巧

    安卓用户若遇到喜欢的APP是外国区的,只要FQ就能下载.比起果粉还要注册,是简便很多.但有没有更简单的办法?这个必须有!笔者前几天在网上闲逛时,就发现了一个给力的网站.让你不用FQ,只需3个步骤,就能 ...

  9. jenkins - svn: E170001报错的原因以及解决方案

    1. 什么问题What? 使用Jenkins配置的svn拉取项目,Jenkins报错:svn: E170001; Your credentials to connect to the reposito ...

  10. Android电话拨号器_06

    在Android模拟器中开发时,有时需要模拟拨打电话功能,由于模拟器不能直接当做真机使用,所以我们需要再模拟器中模拟真机拨打电话,首先需要创建两个模拟器,当做两部Android手机来使用.由于Andr ...