Zhiqim Httpd即知启蒙WEB容器,是Zhiqim Framework面向WEB开发的多例服务,提供更简洁配置、积木式组件模块和天然的模型模板设计。
version.txt19KB
V1.0.1.R2014022701
1)版本创建、整理
2)版本内部发布测试
3)内部测试完成,发布
V1.0.4.R2014060901
1)fadfox.jar调整了Stringx类路径,有影响,要求版本在V1.0.4R2014060901以上
2)增加HttpSessionUser两个字段created和accessed
V1.0.5.R2014071601
1)fadfox.jar增加JSON功能和HTTPC功能,涉及到HTTPD要求调整
2)增加foxpaper功能,对页面信息进行解析
3)修改文件上传实现类HttpUpload为HttpUploader,以防止和httpclient中HttpUpload同名,不好理解
V1.0.6.R2014081901
1)增加fadtemplate模块
2)调整StringBuffer成StringBuilder
3)增加AjaxClass中响应的一种新模式,支持{"responseStatus":0,"responseText":"成功"}格式
4)修改ErrorMsg和SuccessMsg不支持http://跳转问题
5)修改_Var增加变量顺序为,如果没有局部作用域,放置到page作用域,如果有局部作用域,查询局部作用域列表有定义则赋值,否则则最内层局部作用域赋值
V1.0.6.R2015011201
1)fadfox.jar调整DateTimes类方法,有影响,要求版本在V1.0.6R2015011201以上;
2)调整模板输出不支持空行
3)支持默认flex读起跨域文件crossdomain.xml为none
4)去除模板中Hmtlx,Stringx,Listx,Validatex的调用,因为Htmls,Strings,Lists,Validates已继承这几个类
V1.0.6.R2015031401
1)对context.xml的action的return参数改为redirect,重新定义return表示是否转向=true表示不处理template和redirect
2)对ActionForward和FoxHandler作了一下调整,增加强制处理错误和成功信息的判断
V1.0.7.R2015040901
1)计划增加fadfox.js,统一版本到1.0.7
2)支持ajax,window,tooltips,drag,input等
v1.0.7.R2015042101
1)修改AjaxClass中原来"未知错误"的BUG
2)修改AjaxClass支持先判断class是不是Action,如果是直接取Action的单例
3)发布fadfox_1.0.3R2015042101.js和对应的fadfox_ajax.js,fadfox_calendar.js,fadfox_dialog.js,fadfox_tooltip.js,fadfox_input.js等
4)删除原来的successMsg.fox和errorMsg.fox的定义,直接在FoxHandler中处理
5)Styles.bodyOverflowHidden改为Styles.htmlOverflowHidden,增加Styles.htmlOverflowScroll表示overflow-y:scroll
V1.0.7.R2015052001
1)修改AjaxClass支持对Interceptor中设置redirect,在fadfox_ajax.js中重定向
2)增加request.setAttributeAjaxResult中responseStatus不支持小于0和不支持100-699之间
V1.0.7.R2015052501
1)支持多个配置*context.xml文件和多个宏*macro.ftl文件
2)FVariable支持instance=new/global,global表示读取Global中的实例,这样可以保证单例
V1.0.7.R2015060101
1)修改HttpSessionUser原为interface,改为class
V1.0.8R2015060901
1)整理成V1.0.8
2)增加组件的支持
3)修改context.xml和格式,支持配置组件、宏定义和多个context.xml文件
4)修改HttpAccessLog中目录创建,改成递归创建
V1.0.8.R2015061701
1)修改Scripts.isNumericLen()方法中的BUG
2)在HttpSessionUser上增加参数列表,通过getValues,getValue,setValue,removeValue,hasValue进行管理
V1.1.0.R2015072901
1)修改cookie设置的BUG
2)调整server,listner,支持虚拟主机的配置
3)拆离template出来,成立新的项目fadfox_template.jar
4)修改原*.fox为/service/*目录,方便nginx等对路径进行转化
V1.1.0.R2015082501
1)增加HttpResponse中的addCookie方法
2)增加@RmiAnnotation,对RMIService和AjaxService进行改造
3)根据fadfox.jar整理成该版本
V1.1.1.R2015091401
1)使用JDK1.7编译
2)增加在RMI/AJAX时,先使用@ClassShortName检查是不是类简称
V1.1.2.R2015093001
1)要求使用V1.1.2版本的fadfox.jar
2)删除Variable,Rule的配置,暂时没有删dtd的说明
3)修改for调用方式,合并Documents到Xmlx中,删除dtd的说明,改为v1.1.0,增加forward
V1.1.3.R2015112501
1)整理版本,用于生产系统
2)根据FTimer改动修改的版本
3)修改fadfox_drag.js
V1.1.3.R2016010701版本:
1)修改查找Action顺序的BUG,改为按getContextListAll()进行查找
2)修改fadfox_dialog.js中F.prompt方法中$input获取路径错误的BUG
3)修改fadfox.js中Draggable中callback未传值时回调的BUG
4)优化fadfox_drag.js
5)修改fadfox.css中radio在IE浏览器中高度和背景为白色的BUG
6)修改IE11,两次请求user_agent不同导致session无法保存问题
V1.1.4.R2016020301
1)春节前整理版本号
2)修改fadfox_clipboard.js支持增加offsetLeft,offsetTop,offsetWidth,offsetHeight,background等属性
3)修改fadfox.js对offsetLeftAbs,offsetTopAbs修改支持IE和chrome加边框
V1.1.5.R2016050301
1)把资源部分拆出到fadfox_res.jar中,方便和fadfox_servlet.jar共享
V1.2.0.R2016072101版本:
1)调整包名com.zhiqim.fadfox.fadhttpd为com.zhiqim.fadfox.httpd,原来的fadhttp不好理解,现在正式使用httpd作为该产品的名称
2)调整包名com.zhiqim.fadfox.foxcontext为com.zhiqim.fadfox.httpd.context,表示context是httpd的一部分,原来分为两部分不好理解
3)增加HttpConnection, HttpContext, HttpRequest,HttpResponse修改成接口
4)调整原实现HttpConnection, HttpContext, HttpRequest,HttpResponse到bio包内,修改为HttpBioConnection等,为后续增加aio作准备
5)增加HttpHeader、HttpSender和HttpBioHeader、HttpBioSender,用于静态文件时无需创建复制的HttpRequest和HttpResponse的session,cookie,parameter等
6)调整包com.zhiqim.fadfox.http.context.validate到fadfox.jar中,并删除Validate类中的HttpRequest关联
7)删除ActionForward文件,修改Action类的execute方法只有HttpRequest一个参数,ActionForward的功能并入到HttpRequest。HttpResponse不大常用,如果需要用,可以从request.getResponse获取。
8)修改原FoxContext等命名为FtmlContext,统一使用Ftml命名,表示该上下文环境是FTML的上下文环境,原HttpContext改为StaticContext表示静态文件上下文环境
9)增加Context的接口,为fadfox_httpd_servlet.jar作适配用,如果需要把工程放置到Tomcat等容器下,只需增加fadfox_httpd_servlet.jar即可
10)增加@AnAction的支持,在Action类上,或SwitchAction的子类的方法上定义@AnAction,设置好actionPackage属性即可作到无需context.xml实现零配置,当然规约上还是要求context.xml的
11)修改原@RmiInterceptor为@AnInterceptor,@RmiNotFilter为@AnFilterNot等。支持配置在类和方法上,当类上有时,方法上可以不需要定义,如果方法不需支持类的,则加上@AnInterceptorNot作为例外设置
V1.2.1.R2016100801
1)删除ActionExecutor和ViewExecutor,合并到FtmlExecutor
2)修改原定义的viewExt配置为patternUrl,默认值修改为*.ftml,*.ftm,*.htm
3)修改验证码/service/vcode.jpg的展示,调整验证码sessionName原为vcode,修改为_vode_
4)增加action中配置include字段,用于嵌套模板
V1.2.2.R2017010101
1)配合fadfox.jar调整HashMap<String, Object>为FHashMapSO
3)增加只提供RMI服务时无需配置resourceType,resourcePath
4)全面调整配置文件中配置项的规范,包括修改serverName为listen.domain,并支持多个
5)全面优化配置文件中加载顺序和管理,新增类FtmlConfig
6)优化Attribute读取顺序,优先顶级配置,再次根context.ftml配置,再次根context.xml,再次组件context.xml
7)优化Action读取顺序,优先根context.xml配置,再次根actionPackaget,再倒序循环组件
8)控制断点续传后的文件访问时最大不超时8M
9)删除AnStatic的支持
10)修改sendRedirect时也写入sessionId到cookie
V1.3.0.R2017022701
1)调整验证码功能,默认高度和f-input相等28px
2)增加request.setValidateConfirm和request.setValidateGray设置验证确认信息和是否提交变灰
3)修改request中验证,默认非firefox变回不需要回退,firefox需要F && F.onload时才支持变灰
4)修改AnInterceptor,AnInterceptorNot为AnIntercept,AnInterceptNot,预留AnInterceptor用于拦截器定义
5)修改Session.getSessionValidateCode为Session.getSessionVerificationCode,单词VerificationCode更准确
6)删除validateScript的变量支持,请使用request.getValidateScript()方法
7)删除request.setAttributeNoHtmlFilter方法,修改request.setAttribute为不作过滤,过滤任务在模板中使用#{}
8)修改响应头reason增加Urls.encodeUTF8(reason)
9)增加/service/rmi和/service/ajax对表单方式的提交处理
10)迁移/service/upload(原大文件断点续传)和FadfoxUploader组件中,并修改为/service/uploadlarge,同时调整修改原/service/uploadone为/service/upload
11)修改SwitchAction,从V1.2.0开始三参数变一参数时的BUG
V1.3.1.R2017052801
1)修改Asserts.asserts为Asserts.as()方法,使用三目运算断言,防止断言为真时需要初始化无意义的断言失败字符串
2)修改HttpRequest方法getSessionUser(Class<T>),增加<T extends HttpSessionUser>约束
V1.3.2.R2017080501
1)增加Chunked支持,配置最大2M/最小4K,采用chunked时暂不支持gzip
2)修改大文件下载时浏览器停止、关闭导致SocketException时,错误日志没必要打印,影响业务定位问题
3)修改RmiService针对form表单提交不作字段检查密码#号AJAX使用form表单时不能修改BUG
4)修改context.ftml中的变量定义支持完整表达式,原来只支持原型表达式和变量表达式
5)修改returnCloseDiaolog时,配置fadfox_res.jar作立即关闭,防止闪屏
6)增加f-call-iframe的支持,通过iframe提交表单和访问URL,保障有出错信息时,本页面不变化。
7)配合20170927的fadfox.jar版本,支持(F || window).alert
8)修改f-call-iframe中form参数frameTarget为fCallFrame=true,formIndex为fFormIndex
9)增加对话框中的请求识别,参数为fDialogFrame=true
10)增加request.setContentTypeNoCharset方法,表明contentType只支持mimeType,不需要charset
V1.3.3.R2017110601
1)增加/service/rmi的处理中内置对象(context、session、sessionUser、log)的处理
2)修改UploadService中文件上传时指定目录的BUG
3)增加对Action方法上AnTransaction的检查
4)修改request.addParam(String, String)为request.addParam(String, Object)
V1.4.0.R2018010101
1)正式启用ZhiqimHttpd名称,原所有Fadfox改为Zhiqim,原所有fadfox改为zhiqim,原所有FADFOX改为ZHIQIM,原com.zhiqim.fadfox改为org.zhiqim.kernel
2)转移Scripts,Scriptx,Styles到org.zhiqim.httpd.util
3)转移org.zhiqim.kernel.validate到org.zhiqim.httpd.validate
4)优化returnFrame页面,这里不需要zhiqim.js的支持,取parent.Z
5)转移bootstrap的处理,由原来在httpd.xml中配置,修改为在context.xml中配置,当前如果未配置取最后一个组件的bootstrap
6)转移websocket的处理,由原来在httpd.xml中配置,修改为在context.xml中配置,组件内websocket配置独立,通过@AnAlias(protocol)对应websocket类
7)增加对/zres/*的处理,表示组件内的资源文件,优先于context.xml的处理
8)增加对HTTP上下文中的contextXml的配置
9)增加上传时HttpUploader回传参数到cntParamMap中
10)增加Scripts.doReloadParent等方法
11)增加对成功和失败的消息判断
12)整理对ZhiqimML的支持,统一使用ZML代替Template的定义
13)增加getAttribute时,当为_Var支持ZmlVarRuntime运行时读数据
14)修改一个监听对应的所有HttpServer都关闭的时候,没有关闭监听的BUG
15)Class.forName修改成Classes.forName,防止ClassLoader不准确
16)修改zhiqim_context.xml组件配置resourcePath为path,删除actionPackage,改在context.xml配置属性,类似于bootstrap和websocket的配置
17)修改为只有根context才加载组件,组件不检查依赖组件
18)修改HttpSender对非chunked时重设contentlength,FileResourceEntity,ClassResourceEntity设置contentlength
19)增加request.isMicroMessager()判断是否是微信中的浏览器
20)增加request.isMobile()对MicroMessager的判断,如果有,也认为是mobile
21)增加request.getZhiqimClientType()和setAttribute("zhiqimClientType", "www":"mobile")方法
22)修改ZmlContext中initContext方法中,config.create失败的情况下,退出程序
23)增加HttpSessionManager中public List<HttpSessionUser> getSessionUserList(Class<?> clazz);public PageResult<HttpSessionUser> getSessionUserPage(int pageNo, int pageSize, Class<?> clazz);方法
24)增加对isMobile时zhiqim.mobile.css/js的检查,修改action加载时出错未退出工程的BUG
25)修改if (F && Z.onload)的判断未改到的F的BUG
V1.4.1.R2018052801
1)增加静态文件过期时长配置expire
2)增加cookie.domain/cookie.port/cookie.path的配置,以支持虚拟目录/子域名使用相同的COOKIE
3)修改配置命名useCookie修改为cookie.use,matchType修改为pathExactPrior,sessionManager/sessionIdName/sessionTimeout/sessionParameter修改为session.manager/session.idName/session.timeout/session.parameter
V1.5.0.R2019010101
1)修改工程名为zhiqim_httpd,采用zhiqim_kernel_v1.5.0_r2019010101库
2)修改默认配置文件名为/conf/config.xml和/conf/config.zml
3)增加配置文件中sessionUser列表,和action中增加tips,sessionUser项,修改alert为success
4)增加request.getParameterMatch(index)对应的方法
5)删除AIO的处理方式,整理BIO/NIO公共方法到抽象类中,默认BIO,使用Nginx作代理时,建议配置成BIO,因为Nginx默认采用HTTP/1.0协议
6)全面优化websocket在BIO/NIO三种IO下的处理方式
7)修改request.getSessionUser()当session中只有一个sessionUser时返回该值,多个时返回null
8)修改action,允许不指定sessionUser,默认取只有一个sessionUser的情况,多个时抛异常
9)增加加载config.xml时异常抛出异常和文件路径
10)整理HttpRequest/HttpResponse公开的方法,修改BIO合并NIO时的未关闭连接的BUG
11)修复HttpWebsocketMessage/HttpWebsocketMessageAsync中的对mask=false的BUG和length可能为0时isClose无内部的BUG
12)修改为Threadx处理方式,修改Tasker的继承为实现Task,定时任务Timer/Every改为Interval等
13)执行程序和源码分开打包
V1.5.1.R20190528
1)删除原配置websocket项,修改为支持多个websocket,直接通过注解定义协议名称
2)修改StdAction中的modify/update为非abstract,支持修改采用AJAX调用item进行修改
3)修改jquery.js为zhiqim-org.oss的URL,因为百度的URL上次出现被google浏览器设置为非法
4)打开favicon.ico/crossdomain.xml默认值,在V1.5.0中被关闭过
V1.5.2.R20190927
1)增加连接上的getRemotePort功能
2)对HttpServer中contextList的增删作同步,防止destroy时ConcurrentModificationException异常
3)增加ZmlContexts解析内容时,增加内容为空的检查
4)增加获取远程端口方法,修复ReturnView中NullPointerException中再次异常的BUG
5)调整WebSocket的onOpen方法,放置在线程已启动之后调用,以前是放在构造函数中导致读不到conn
6)整理WebSocket相关类,修改类名和采用zhiqim_kernel中的WebSocketPacket等包
7)对应修改URI.parse方法
8)修改HttpWebSocketService查找方式,在WebSocketSerivice中先通过protocol查找,没有的直接返回406错误
9)修改RmiService和ZActionPackageLoader中的两个BUG
V1.6.0.R20210401
1)修改软件开源协议为木兰宽松许可证, 第2版
2)源码打包到执行程序一起
3)增加cookie.force配置项,用于根域名和子域名是不同网站时,强制cookie名称前加domain:portpath
4)增加session.idMark配置项,用于根域名和子域名或不同虚拟目录时验证是否是本上下文环境的sessionId
5)基于zhiqim_kernel的V1.6.0.R20210401版本
6)增加request.chkValidateScript和UploadService的前置和外接支持
7)增加对/service/res/extend的支持
8)session先updateInfo再getSession,合并成getSessionByUpdate,(RMISession时减少调用次数)
9)增加session.must和session.not配置,默认只有.zml,.htm,.do和无后缀的四类需要会话,如遇不同的要求,通过session.must,session.not来配置
10)增加通过参数名和参数值获取对应的WebSocket
11)修复request.hasSessionUser()方法session==null时返回null的BUG,修改为返回false
V7.0.1.R20210701
1)修改版本号为V7,表示该版本以JDK7为基准
2)删除configuration
3)调整测试的manage,只保留zhiqim_console.jar,删除对orm的依赖
4)整理websocket测试示例,未传入协议名时,协议名使用defaultWebSocketProtocol
V8.0.1.R20210708
1)修改版本号为V8,表示该版本以JDK8为基准,同时V7采用分支jdk7
2)开放PUT/DELETE方法,以前没支持
3)解决从Strings.toObject转到RmiService.toObject时不支持空白的BUG
4)增加跨域OPTIONS支持,配置文件增加optionsHeaders,optionsMethods,optionsOrigin,optionsMaxAge
5)增加HttpSessionUser中getValueObj/getValueList/getValueMap方法,同时修改setValue方法的一个错误描述
V8.0.3.R20220212
1)根据8.0.3的kernel进行调整
V8.0.4.R20230310
1)修改1.5.0的DTD为8.0.0
2)修改ZmlBootstrap中context为ZmlContext,方便直接addHandler
3)增加ZmlBootstrap的event方法,方便组件事件通知宿主工程
4)增加AnLogNot注解,用于bootstrap.log在RMI和AJAX时默认不打印
5)修复config.xml配置interceptor时,多个之间用空格隔开时未去除空格的BUG
6)增加ZmlExecutor中InvocationTargetException取TargetException
7)增加ZmlContexts.parseZmlContent时content空白的检查
8)增加request.getParameterBool()返回Boolean,没有值的时候返回null。这样即支持null|true|false三种状态
9)恢复Action访问日志打印,增加AnLogNot屏蔽
V8.0.5.R20230618
1)根据8.0.5的kernel进行调整,ValidateConstants迁移到httpd项目,常量前加下划线
2)增加IsIntegerPositive和IsIntegerNonnegative,用于判断参数为正整数和非负整数
3)增加AnPathRMI,用于指定RMI/Ajax调用时配置的路径,同步kernel的LinkedMap按索引get为index
4)增加IsAmountPositive2R和IsAmountNonnegative2R
5)增加服务处理器的add和remove,请求工具类增加设置下载文件名
6)HttpHeader支持getInputStream
V8.0.6.R20240718
1)根据8.0.6的kernel进行调整,AnAlias有改动,兼容可能有问题
2)UploadService上传文件支持调用RMI的service以便支持上传文件直达方法
3)UploadService配合ZhiqimUI支持参数X-Upload-Parameter放置到Header中
4)增加RedirectContext,方便配置跳转HTTP:80到HTTPS:443