其他帮助 




作者:陈原   mail:39793751@qq.com   QQ:39793751    home: http://www.jspx.net  项目地址:http://code.google.com/p/jspxnet/

1.sober 是什么?有什么作用?
    sober 是一个类似hibernate,ibatis 的结合体(主要指用法上) , 运行原理是直接使用sql .特点是避免了hibernate的缺点,使用ibatis的优点作为补充.减少关联查询的麻烦. 两种方式并用,完成各种查询是没有问题的,目前主要支持的数据库:oracle,mysql,postgresql,db2. 个人更喜欢postgresql.
2.TXweb 和struts 2有什么不同?
    TXweb的配置和struts 2很接近,action方式也很相同.但最大的不同是,跳转方式和运行方式完全不一样.TXweb使用的是restFul的方式运行的. 页面执行后就直接输出了.而struts 2是跳转到另外一个页面在执行以jsp方式运行输出,虽然页面执行后不跳转直接输出的方式比较标准,但使用ssh的人多了,反而感觉ssh的更标准. TXWeb (temple xml web) ,就是xml模板构架,这个构架遵行xml规范.模板方式运行.运行原理如php.

3. scriptmark模板和其他的模板有什么不同?
    scriptmark 使用的是javascript引擎,而其他大多模板使用的是自己做的引擎或者javacc做的引擎. 而javascript引擎在jdk1.6后自代了这个引擎作为jdk的一部分.
所以在体积上更小,而且javascript引擎的的功能强大,程序代码库在网上也很多,并且一次书写后能够在服务器上和浏览器上都运行.能够为我们减少大量工作.

4. 他们是如何协作工作的?
功能分层上和ssh很接近.sober完成数据库的操作(DAO)   ,TXWeb完成页面的显示.scriptmark作为TXWeb显示的表现层模板语言.另外底层部分包括了ioc.
等功能协同工作. 本构架应该说是一个平台,包括了启动部分,完成配置和初始化配置等工作,(并且可以启动平台的定时器,完成一些定时性的工作).应用部分
通过环境工厂EnvFactory 得到平台信息.如同我们要得到windows的环境变量一样.这个平台提供了你说要的基本功能,配置好后调用就可以了.启动部分可以看boot目录.启动的时候会自动的找.jspx.net.xml 文件,这个文件的所在目录将作为默认的配置文件保存目录.配置里边支持通配符引入 例如 <include file="*.sioc.xml" />
这样当你要部署新的应用的时候只要拷贝配置文件到这个目录里边就可以了. 当然配置文件拷贝进来后不会立即生效,需要过一定时间才会生效.如果你想人工控制,你可以调用.JspxNetApplication 里边的 restart 方式.这里提供了一些平台运行的基本信息.和启动控制.虽然他们被放在一个包里边,但功能是相互独立的,你可以只使用其中的一部分功能也可以。


5. ajax如何处理?
ajax部分提供了完整的支持,浏览器上使用mootools基本库,你只需要对mootools一定的学习就可以了.mootools作为一个优秀的js库应用范围很广.作为一个开发者是应该掌握的.RPC方式的调用为您提供了封装,是很方便的.可以参考 例子里边的:adduser.ftl 看看中国大陆地区的城市如何载入的.

6. ajax 提供了那种格式传输数据?
  我们为您提供了xml方式和json方式,这也是最常用的方式.本构架内部, 配置文件和传输协议都是xml格式,也许你认为xml代码量多,但这样更加规范和稳定.而且xml部分都是在构架内部应用,而你要在浏览器端接收的数据你可以指定要使用xml或json,我们更推荐在浏览器端使用json格式.
你并不需要了解也可以使用. 只需要设置 <result name="*" type="json"/> ,让构架知道你需要json
7. 如何系列化为json或者xml
    页面模板已经为你提供了系列化函数, 在页面输出中 你只要 ${json(mo)} ${xml(mo)}就能够将mo对象转换到json或者 xml格式.同时也为你提供了json或者xml的返回类型,在配置返回的地方如果配置为json.那么就不需要映射页面了.
这部分参考例子里边的employee

8. 系列化的时候我想指定一些字段的名称或者部分字段不输出?
这类情况主要是密码,或者和其他ui兼容后期维护上会碰到.
下边name在转换为json或者xml的时候名称会变为 userName,而old字段的数据将不会输出.

9. 如何制作一个有restFul风格的的网站?
本构架的命名空间既有继承功能,并且命名空间是和目录对应的.利用命名空间的特点,配合通配符的配置action名,就能够达到这样的效果.
当然目前达不到零配置的. 例如下边的配置:实际使用的时候使用英文为好. 销售单据查看View bean就可以拦截到你的id数据.action同时提供了起数据的方法就可以实现了. 可以参考例子里边的employee.
10. 验证的原理?
首先读取验证配置的数据,这些数据将代如javascript中运行.并且javascript是在服务器可以客户端都可以运行的. 配置数据根据一个id号分组,一般我们就作为form 的id.浏览器端验证后,将更具你配置的id显示位置,去显示验证后的数据结果. 服务器端验证后如果发现不符合要求的数据将会异常,异常信息为你配置的数据信息.另外如果你的安全性要求很高可以在bean里边也配置验证. 当保存数据的时候会再验证一次.当然一般情况下客户端和浏览器端各验证一次就已经很安全了. 下例说明:"isBetween(14,120) ,isBetween是js的函数,数字部分是参数. msgId 是你在网页里边的容器id ,needed 表示是否必须
11. 我想只使用部分我喜欢的功能行吗?
可以,你可以不使用sober换,其他的rom是可以的.web ui 也是相对独立的,你也可以使用其他的ui.因为都是标准的json格式,很容器替换. 模板部分你也可以独立的的应用,都是没有什么影响的.如果你对spring 了解,还可以将本构架的sioc替换为spring ioc都没问题.
前提是,你要对java或构架有一定的了解.
12. 稳定性如何?
很多朋友比较关心稳定性,这个构架已经开发了好几年了,并且也用了好几年了.一年开机也没问题.稳定性是没问题的了.
13. 性能如何?
模板语言的原理就决定了他的速度.模板语言的解析速度和freemaker差不多,高并发的时候优于freemaker,所以freemaker模板能用的应用都能用.
虽然freemaker说能达到html的速度,单本人并不这样认为.毕竟模板语言还要解析一次才能输出.而且速度大多和数据的关系比较大,而模板部分的执行时间是很少的.
14. 模板页面里边如何使用action bean ?
使用action bean 有下边几种方法:
   a. 根据TXWeb 的配置,映射到相应的模板文件,那么这个模板文件会自动的载入你所配置的action.
   b. 在页面里边你也可以使用action函数来创建,例如 <#assign tree="treeview@jcms".action(true,false,"nodeId=jcms1") />表示创建jcms命名空间下的treeview  action,里边的参数分别表示,true 表示是否接受外部请求参数,false 表示是否执行execute部分,这里也可以是一个方法名,表示要执行某方法.后边可以是其他参数.以后使用tree这个名称就可以调用了.
  c.本平台的action,如果是使用ioc方式配置的,那么这些对象将会保存在ioc容器里边.ioc将会关联这些action bean对象的销毁.

15.如何得到request的参数?
     a.在action里边很简单,有两种方法,一个是定义方法名称,提交后自动注入和struts 2一样.另外一个方法 是直接使用父类方法 比如得到字符串
getString("变量名称") ,getInt("变量名称"),提供了各种基本类型的转换得到,在ide里边都会有提示的.
    b. 在模板页面里边,要得到直接调用父类方法就能够方便的得到了例如, action.getString("变量名")
.
16. 如何得到当前模板页面的路径?
   a.在action里边getTemplatePath()
   b. 在模板页面action.getTemplatePath()


17.日志在那里,如何调试?

日志目录在文件夹/WEB-INF/logs/下边,控制日志的输出你可以使用jspx.properties文件中的参数来配置.
error=true
fatal==true
info=true
debug=true

jspxError=true
jspxFatal==true
jspxInfo=true
jspxDebug=true

上边部分表示系统的日志,jspx的部分表示构架部分.要显示查询SQL这些的时候注意将debug设置为true


18.出现乱码,如何解决?

首先你确定你使用的编码方式.系统默认使用的都是UTF-8编码,所以推荐默认使用UTF-8编码方式.jspx.properties文件中可以配置 encode=UTF-8.
你其他的几个部分也必须保证编码一致才不会出现乱码问题.
a.你的文件保存编码.
b.你的数据库保存编码.
c.如果你使用Tomcat 中也设置连接编码<Connector URIEncoding="UTF-8"/>
保证上边的统一,就不会有编码问题了.

19.Servlet配置和filter配置有什么不同?

如果你的应用比较简单,推荐使用filter方式,filter方式不需要配置listener.
而servlet方式要配置listener.servlet方式使用在有多种脚本在应用中使用的时候比较时候.你可以在实际应用中配置servlet的url-pattern为你实际的后缀更好.

配置如下:
<filter>
<filter-name>jspx_txweb</filter-name>
<filter-class>com.jspx.txweb.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>jspx_txweb</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

20.站点的后缀名和模板扩展名称是否可以改变?

可以,.jspx.properties文件templateSuffix=ftl表示的是模板后缀名称,你可以将模板保存为其他后缀名称,只要和这里对应就可以了.而站点页面的后缀配置为suffix=jsp
这里最好和Servlet或过滤一样.这样你之用使用文件名称+这里的配置扩展名称就可以访问页面了.
我们推荐使用jhtml这个后缀比较规范一点,目前版本使用jsp作为例子主要是方便大多数人的习惯。

21.启动的时候会看到DefaultPath=xxxxx这个路径有什么意义?

系统启动后本构架会查找jspx.net.xml文件,进行必要的初始化工作.找到jspx.net.xml文件的目录将做为默认目录.查找其他的配置文件也在这个目录查找.
当本构架做为C/S构架使用的时候,也同样可以查找jspx.net.xml文件做为默认目录,相当于配置文件目录.
如果你想隐藏配置文件打包在com\jspx\core\conf目录里边,能够自动找到.
同时如果控制台没有显示DefaultPath表示没有初始成功.其他功能就不更能运行了.

22.模板能做那些事情?

.模板部分使用了javascript引擎,可以调用java类,所以和jsp 一样强。能删除文件,本地运行还可以写UI界面。
如果你不希望javascript 有太高的权限,可以通过修改jvm的安全配置文件来控制。

23.本构架是否稳定?

本构架3.5 版本后已经稳定。我们做了相关各种测试,表现均很优秀。
4.5 GA 版本后在内存和CPU上都调整优化到均衡的水平,并且我们本构架已经使用在多个系统中,你可以放心使用。

24. sober 对那个数据库支持好?

  我们主要以主流开源数据库支持更好,推荐使用PostgreSQL或者 Mysql5以上版本.