Vert.x Guide demo解析续 译<三>


声明:本文转载自https://my.oschina.net/u/2277632/blog/1578210,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

HTTP路由handlers

根据依赖URL模式和HTTP方法,startHttpServer的路由实例会指向不同的handlers,每一个handlers处理一个HTTP请求,执行一个数据库查询,渲染一个FreeMarker模板的HTML页面。

页面目录handler

wiki的页面目录提供了链接的入口,或者创建一个新的:

这是直接将select * SQL查询返回的结果数据传递给FreeMarker模板来渲染到HTML响应。

indexHandler方法的代码如下:

    1.SQL查询的结果会通过JsonArray和JsonObject的对象返回。

    2.RoutingContext对象将使用key/value的数据,使之用于模板或者路由handlers链。

    3.渲染一个模板,这是一个异步的操作,需要我们使用AsyncResult。

    4.AsyncResult包含一个模板渲染成功的String,我们可以结束使用这个值。

    5.在失败的情况下,RoutingContext提供一个方式来返回一个HTTP 500错误给HTTP客户端的。

FreeMarker模板需要放在src/main/resources/templates,其中的index.ftl模板代码如下:

Key / value的数据存在RoutingContext对象里,可以通过FreeMarker的context获取。

既然多数的模板有公用的header和footers,我们提取了下面的代码到header.ftl and footer.ftl

wiki页面渲染handler

这个handler处理HTTP的GET请求,渲染如下的页面:

页面上提供了一个编辑的按钮,而不是有一个单独的处理程序和模板,我们仅仅依靠JavaScript和CSS切换编辑器,当按钮被点击:

pageRenderingHandler方法的代码如下:

    1.获取URL请求中的参数(/wiki/:name)

    2.通过使用JsonArray传递参数来取代SQL语句中的 ?。

    3.来自txtmark Markdown中的Processor是我们是会用的渲染类库。

page.ftl的模板代码如下:

Page创建handler:

在首页提供了一个属性来创建新的页面,设计的HTML和URL都会由这个handler管理,这个策略并不是实际上在数据库中创建一条记录,而是重定向到一个Wiki页面来创建。既然这个Wiki页面并不存在,pageRenderingHandler方法将会使用一个默认的文本,最终用户可以来剪辑和保存这个页面。

这个方法是pageCreateHandler,它的重定向是通过HTTP的状态码303:

页面保存Handler

pageUpdateHandler方法用来处理保存页面的HTTP POST请求,当一个页面已经存在的时候也是这个(执行SQL的update操作)或者保存一个新的页面(使用SQl中的额insert操作)

    1.RoutingContext可以获取HTTP POST请求中的表单参数,注意没有BodyHandler Router配置的,这些值将无效,需要手动解码HTTP POST的请求数据。

    2.我们在page.ftl使用了一个hidden值,用了知道是否事更新一个已经有的页面还是创建一个。

    3.Again,我们需要把SQL的查询参数放到JsonArray中。

    4.updateWithParams方法用于insert / update / delete SQL操作。

    5.成功后没我们将重定向到那个编辑过的页面。

页面删除handler

pageDeletionHandler实现的方法事比较直接的。通过传递一个wiki记录的唯一标识,然后执行SQL的delete操作后重定向到首页:

 

终于要运行这个应用:

在这个阶段,我们有了一个可以运行的独立应用。

在运行之前我们需要使用maven构建一下:

mvn clean package

在构建完成后会生成一个Jar包(包含了所有的依赖,Vert.x 和 a JDBC ),运行是比较简单的:

java -jar target/wiki-step-1-1.1.0-fat.jar

然后我们可以选择自己喜欢的浏览器访问 http://localhost:8080/ ,enjoy!

 

原文链接:http://vertx.io/docs/guide-for-java-devs/

我的微信公众号:

 

本文发表于2017年11月24日 10:33
(c)注:本文转载自https://my.oschina.net/u/2277632/blog/1578210,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1931 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1