GWA2吉娃兔🐇升级增加搜索模糊语法支持

一些事情一旦开始往往无法以自己预期的方式结束。
比如始于2022年2月24日的俄罗斯侵略乌克兰的战争,入侵者原计划三天之内打垮被侵略的乌克兰现政权,没想到快三个月过去了,战争仍然没有结束。反而战争的强弱双方开始逆转。顽强的乌克兰人民英勇抵抗精神正在逐渐获得更多国家的正义支持( https://ufqi.com/news/ulongpa...一个新的小强国正在挣扎中崛起 )。显然入侵者无法以自己的预期的方式来结束这场战争。

与破坏作恶者相反,一些建设者的积极项目也是一旦开始了,就持续不断的改进、升级,消灭一个又一个bug,增加一层又一层防护,原来世界可以变得更加美好,比如GWA2 吉娃兔项目。最好的版本永远是下一个发行版本。

GWA2吉娃兔自从2022年2月份进行了多进程多线程改进升级以来( GWA2 Java 增加多线程数据共享通道 globalData, https://ufqi.com/blog/gwa2-ja... ),又陆续进行了一些优化,兹记录如下,以备查访。

  • Page Navigator 页面浏览增加对模糊搜索的支持
    Page Navigator 页面浏览模块是所有网络应用开发中最高频使用的功能之一。我们也对此进行了进行设计和代码实现。随着多年来大量的软件工程项目实践,我们陆续开发了独有的 PNSK 和 OPPKNSK 功能设计,实现了从浏览器参数设置到数据库SQL查询语句组装的全流程支持。
    PNSK , Page Navigator Search Key, 页面浏览搜索关键词,
    OPPNSK, Operator of Page Navigator Search Key. 页面浏览搜索关键词的操作符.

给定页面请求参数如,&pnskfielda=abc&oppnskfielda=contains ,
将通过 PageNavi 组装成如下数据库SQL查询语句:
…. and fielda like ‘%abc%’ …

这次改进升级的包括,如果给定页面请求参数中包括了空格或者问号?/?等模糊查询的搜索语法时,PageNavi 能够识别这种语法并做进一步的处理,使之能够转化为相应的数据库SQL查询语句。

给定页面请求参数如,&pnskfielda=abc%20efg&oppnskfielda=contains ,
将通过 PageNavi ,增加对模糊查询的支持,组装成如下数据库SQL查询语句:
…. and fielda like ‘%abc%efg%’ …

对模糊查询语法的支持,最早的想法和实现是在 gMIS吉密斯的改进升级中,当初的写法为:
$gtbl->set($field, “%”.str_replace(‘ ‘,’%’,$v).”%”);

改进后的写法将使用 _parseBlank 来统一替代:
$v = $this->_parseBlank($fieldopv, $v);

在新增加的 _parseBlank 中约束了目前只针对 contains 和 notcontains 这连个 oppnsk 进行如上操作,同时也通过全局配置开关 GWA2_Is_Parse_Blank 进行控制,可以对该功能进行停用。

除了 gMIS吉密斯之外,这项升级改进,将陆续应用在 UfqiWork有福工坊 和 UfqiFina有福金融 的搜索功能模块中。

  • 增加对传统 Base64 编解码的封装
    作为编解码的辅助设施,在 GWA2吉娃兔的设计中,默认的工具是 Base62x, 她比原生的 Base64 有更好的适应性( https://ufqi.com/dev/base62x )。由于 Base62x 推出时间较新,在GWA2吉娃兔开发的网络应用中,出于对接其他老旧系统的需要,仍需要兼容传统 Base64 的编解码处理。为此,我们改进了 inc/Zeea.class, 增加了相应的方法:

inc/Zeea.base64Encode 和 inc/Zeea.base64Decode

比如,我们在新近的一个项目中需要对接 Aliyun阿里云的一个在线服务,其中的API接口中,需要封装参数,为安全起见,在API接口请求参数时,使用 URLEncode对参数进行编解码,其中的不安全字符需要做替换处理:

private String specialUrlEncode(Object value) throws Exception {
return java.net.URLEncoder.encode((String)value, “UTF-8”)
.replace(“+”, “%20”)
.replace(“*”, “%2A”)
.replace(“%7E”, “~”);
}

如果使用较新的 Base62x 来进行 URLEncode的话,则不必如此繁琐地进行多个不安全字符的替换 ( https://www.researchgate.net/... )。 因此,倡议更多的开发者在面向未来的网络应用开发中,全面使用 Base62x 取代传统的 Base64 .

  • 增加对JSON/CSV格式数据的转换处理
    GWA2吉娃兔 在最近升级改进中,在 Hanjst 模板处理的服务器端,增加了两个处理格式数据的方法,分别是处理JSON数据的 json2Map 和处理CSV数据的 csv2Map . 这两个方法可以方便对外处理数据交换。

数据转换处理背后的支持类库是 Google Gson . 相应的类库包已经随着 GWA2吉娃兔打包在一起。

本文首发地址:-R/q2Sa , https://ufqi.com/blog/gwa2-fu...

  • GWA2吉娃兔
    -GWA2 吉娃兔 是”通用网络应用架构( General Web Application Architeture, https://ufqi.com/dev/gwa2/ )”,基于 -GWA2 可以轻便构建各种网络应用程序,
    包括复杂的在线购物商城、在线医疗、在线教育、 旅游交易平台、社群或者社交网站和新闻资讯网站等,
    也包括各种企事业单位网上门户,在线交互及服务作业系统等.
    还可以包括为NativeApp做服务器端支持, 甚至是WebApp的全部.
    -GWA2 是为数不多的支持跨开发语言的应用框架,目前支持 -Java, -PHP, -Perl, -Aspx and -Python .

-GWA2 is a “General Web Application Architecture” and based on -GWA2 developers can easily build a variety of network applications,
including complex online shopping malls, online medical services, online teaching, travel trading platforms, community or social networking sites and news information sites, etc.
Also the applications include various online portals of enterprises and institutions, online interaction and service operations systems.
Moreover it contains server-side support for Native App, or even all of the WebApp.
-GWA2 is one of the web frameworks which provide cross-language support for -Java, -PHP, -Perl, -Aspx and -Python at present.

-GWA2 is E.A.S.Y
Easy Along, Swift Yield
轻松启动, 快速产出.

计算技术专家.

32 声望
4 粉丝
0 条评论
推荐阅读
GWA2Python吉娃兔Python语言生产就绪版本发布
2022年11月1日,我们很高兴地宣布,GWA2Python吉娃兔Python语言生产就绪版本已经发布。经过历时两个多月的编码与移植, GWA2吉娃兔绝大部分核心功能均已经由Python编程语言实现,现在开始起,编程用户可以使用Pyt...

wadelau阅读 202

程序猿必读-防范CSRF跨站请求伪造
CSRF(Cross-site request forgery,中文为跨站请求伪造)是一种利用网站可信用户的权限去执行未授权的命令的一种恶意攻击。通过伪装可信用户的请求来利用信任该用户的网站,这种攻击方式虽然不是很流行,但是却...

mylxsw22阅读 15.1k评论 12

一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
前言秒杀和高并发是面试的高频考点,也是我们做电商项目必知必会的场景。欢迎大家参与我们的开源项目,提交PR,提高竞争力。早日上岸,升职加薪。知识点详解秒杀系统架构图秒杀流程图秒杀系统设计这篇文章一万多...

王中阳Go33阅读 2.4k评论 1

封面图
计算机网络连环炮40问
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

程序员大彬14阅读 1.7k

万字详解,吃透 MongoDB!
MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统,由 C++ 编写的。MongoDB 提供了 面向文档 的存储方式,操作起来比较简单和容易,支持“无模式”的数据建模,可以存储比较复杂的数据类型,是一款非常...

JavaGuide8阅读 1.6k

封面图
花了半个小时基于 ChatGPT 搭建了一个微信机器人
相信大家最近被 ChatGPT 刷屏了,其实在差不多一个月前就火过一次,不会那会好像只在程序员的圈子里面火起来了,并没有被大众认知到,不知道最近是因为什么又火起来了,而且这次搞的人尽皆知。

Java极客技术12阅读 3.1k评论 3

封面图
数据结构与算法:二分查找
一、常见数据结构简单数据结构(必须理解和掌握)有序数据结构:栈、队列、链表。有序数据结构省空间(储存空间小)无序数据结构:集合、字典、散列表,无序数据结构省时间(读取时间快)复杂数据结构树、 堆图二...

白鲸鱼9阅读 5.2k

计算技术专家.

32 声望
4 粉丝
宣传栏