TXWeb帮助2.2




作者:陈原   mail:cayu@gzec.com.cn   QQ:39793751    home: http://www.jspx.net

1.简介
TXWeb (Template XML Web 构架)是模仿xWork的一个事件驱动构架.设计思路差不多,但运行方式完全不同,WebWork2的内核就是xWork.而TXWeb 在xWork的基础上再简化,并且完全的丢掉了JSP.使用Freemarker 的数据模板方式.换句话就是,不需要JSP环境也可以独立的使用TXWeb .也没有了JSP标签,完全是模板.在JAVA内部完全的生成网页后,才交给WEB 服务器显示页面.当然借助了Servlet 容器来提供Web请求和基本的HTTP支持.
  • 本构架必须在jdk 1.5 以上版本


  • 1.页面生成流程图

     





    2.功能说明
    1. 模版语言生成页面,你可以写自己的模板支持类,目前支持Freemarker,其他模板语言在后边版本删除了,如果有更方便完整的模板语言会考虑支持。
    2. jdk1.5的标签配置跳转,这样就可以实现零配置使用了。如果TXWeb检测到有配置优先配置.更容易维护。
    3. 也可象Struts2(webwork2)那样配置跳转,配置action映射。action的生成是sioc控制,你可以自己配置是否使用单列,Aop等。TXWeb据有拦截器等功能。
    4. 内置了ajax支持,ajax传输使用了xml为默认方式。
    5. 配置也支持通配符和缓存配置。
    3.例子说明 (一个简单的hello world)

    必须在基础配置上开始下边例子.
    例子里边有两个hello,下边可以看看如何分别得到.通过这个例子我们可以明白页面如何同bean进行交互数据.

    sioc 配置文件,方便注入TXWeb中使用,当然也可以不配置这一步,直接在TXWeb中直接配置,但推荐这样做.

    这里是TXWeb的配置文件.

    配置完成后我们可以看看如何调用配置的这个bean. 我们可以在根目录下创建一个hello.ftl的文件.(模板文件可以配置为不同的后缀). 但名称要和上边的hello一样,这样TXWeb就会自动的载入这个helloWordAction这个bean. 默认名称为 this 运行一样就能够看到效果了. 当然我们有时候文件名称不一定和上边的action name一样,这时候要载入bean也很简单.你可以使用下边的方法. action(参数1,参数2,....)
    参数1 :是否载入request参数.
    参数2 :是否要执行一个方法。
    其他参数,使用文本方式可以设置方法例如要设置 setOld(int old) 方法可以这样写, "old=12",
    变量设置完成后将放在Freemarker相应的变量中。
    test表示命名空间,也是文件放置的目录,对应的action也在sioc对应的命名空间查找,如果找不到在再sioc的global 命名空间查找。
    4.我们来演示一个带翻页的例子

    代码如下,注意 @TurnPage 的设置说明

    Sioc配置如下

    TXWeb配置如下

    页面代码文件turnlist.ftl

    5.下边在做一个拦截器的例子

    fmAction.java 文件完成显示的对应动作,或得到显示数据


    拦截器代码FmInterceptor.java


    Sioc配置


    TXWeb配置,和webwork2一样

    当我们在fm.ftl的页面文件中调用的时候就可以拦截了,一步我们在拦截器里边可以完成权限,日志等功能比较方便.

    6.下边我们做一个按钮的例子,并且可以使用标签跳转
    ResultTestAction.java

    下边例子不使用sioc配置,直接配置TXWeb来演示,实际使用中推荐使用sioc. TXWeb直接配置例子如下,type="class"表示是直接载入class不是从sioc中载入,默认sioc中载入.
    注意@operation,和上边代码的@Operate(submit = "operation", value = "save", caption = "test save")部分对应
    表示提交按钮的名称为operation,当提交的value为Operate的数值value相等的时候执行这个方法.如果不没有value表示. 不为空就执行这个方.

    调用代码为 testh.ftl
    点击按钮后会生成页面,并跳转到页面。

    7.一个简单的例子演示,熟练用法

    在这里新建一TestBean来演示模板标签的反向请求变量



    注意:前边我们的配置是,<action name="*" class="fmAction">,*表示如果没有找到对应的action 名,就调用fmAction这个sioc的 test.html,这里也可以使用标准表达式

    test/test.html  目录和上边的命名空间对应,虽然不一定要求对应
    载入的时候同样使用 <#assign testBean="fmAction@test"sioc()/> @前表示sioc中配置的名称.后边表示命名空间.
    如果没有写命名空间的话将使用当前的目录作为命名空间,如果也没有,最后在global命名空间里边查找.

    运行程序web服务器,根据你的配置 suffix=htm 输入URL地址,默认是htm,(注意如果有apache,你必须配置让apache 让出htm的请求转给java web服务器,比如resin)

    例如地址 http://localhost:8080/txweb/test.htm
    你就看到下边的效果了。

    这里输出一段文字
    测试输出:123456789

    这里载入其他的bean,也可以是sioc中配置的bean
    name:名称
    old:40

    本页对应action调用: 调用输出:西西
    调研完成:成功


    看看生成的HTML代码 ,是不是很干净漂亮并且<!-- --> 这样的注释不会输出给浏览器。
    <p>

    这里输出一段文字<br/>
    测试输出:123456789
    </p>
    <p>
    这里载入其他的bean,也可以是sioc中配置的bean<br/>

    name:名称<br/>
    old:40
    </p>

    本页对应action调用:
    调用输出:西西<br/>

    调研完成:成功<br/>

    8.TXWeb 中的annotation功能说明

    annotation标签名称 参数说明 功能说明
    MulRequest

    String covering() default "false"; //是否覆盖文件

    String saveDirectory() default "saveDirectory"; //保存目录

    String fileTypes() default "*"; //允许上传的文件类型

    String maxPostSize() default "800944751"; //最大上传大小

    上传方式
    Operate

    //提交按钮名称
    String submit() default "";

    //提交按钮值
    String value() default "";

    //和 hasFieldInfo 相等的时候运行,fieldInfo保存错误信息
    boolean hasFieldInfo() default false;

    //动作名称描述
    String caption() default "";

    动作绑定bean方法
    Redirect

    //跳转方式 location redirect forward
    String type() default "redirect";

    //text/html; charset=UTF-8
    String contentType() default "";

    String location() default "";

    页面跳转,如果存在跳转将不执行其他任何方法包括execute
    Safety //判断是否过滤sql注入
    boolean check() default true;
    设置bean参数的时候防止sql注入
    TurnPage

    //模版文件名 turnpage.ftl
    String file() default "turnpage.ftl";
    //得到总行数方法
    String totalCount() default "@totalCount";
    //默认行数
    String rows() default "@count";
    //当前显示页数
    String currentPage() default "@currentPage";
    //一页显示的行数
    String count() default "@count";
    //翻页按钮个数
    String bound() default "3";
    //请求中的参数querystring
    String params() default "";

    //开关,为了提高性能,提交时候传递参数判断释放运行
    String enable() default "@pageEnable";

    翻页标签
    Validate

    //返回信息类型
    String infoType() default ValidatorDataType.all;
    //formId 校验Form ID

    String formId() default "";
    //sioc id

    String name() default "";
    //sioc 命名空间

    String namespace() default Sioc.global;
    //配置文件

    String submit() default "submit";

    验证,本验证使用在页面上和sober的验证java代码核心是一个,

    但有所不同,这里的使用javascript完成的。
    name为验证bean.
    <bean id="validatorxml" class="com.jspx.validator.view.ValidatorView" singleton="false">
    <string name="configFile">user.validator.xml</string>
    </bean>


    9.如何上传文件
    要上传文件的时候继承extends MultipartSupport, 并且留出multipartRequest的接口就可以了。 下边的代码已经在构架中,当理有其他需求的时候,可以自己继承后设置相关参数就可以了。
    DefaultUploadAction.java

    下边我们看看sioc配置
    com.jspx.txweb.support.UploadStatusAction 是TXWeb中已经有的,主要是得到上传时候的流量信息。
    能够实现ajax方式显示上传进度条。这里查看 swfupload 上传,本上传组件能很好的支持。

    下边是TXWeb的配置代码


    下边为页面代码upload.jsp
    如果想通过ajax得到上传状态信息,可以看演示。

    10.ajax验证TXWeb部分使用的是javascript来验证,sober部分当然不会是javascript了,但都是同一部分模块。

    下边我们配置一个要验证的form,假设里边有两个输入框需要验证,我们配置如下,dataType="验证的条件" field="要验证的输入框ID",msgId="显示消息的层id",needed="是否必须填写字段"
    保存为user.validator.xml文件。 dataType在程序中已经内带了大部分的验证方式。只需要调用就可以。如果有特别需要库自己扩展。
    验证名称 例子 说明
    isChinese isChinese 是否为中文
    isDate isDate 判断是否为日期格式
    isMobile isMobile 是否为手机号码
    StartsWith§endsWith startsWith[aaa]|endsWith[bbb] 判断开始字符是aaa| 判断结束字符是bbb
    equals equals[aaa] 判断字符是aaa
    isBetween isBetween(2,100) 数字在2-100范围
    isLengthBetween isLengthBetween(2,20) 判断是否字符串长度在2-20
    isDateTime isDateTime 判断是否为日期加时间的格式

    验证函数很多,你可以打开,com\jspx\scriptmark\jslib.js 看里边的函数,是判断类型的都可以在验证里边使用,所有的函数均可以在模板里边使用。


    sioc中配置载入验证接口,和要验证的user.validator.xml文件

    TXWeb中配置载入验证动作,使用ajax方式

    adduser.ftl

    11.相关说明

    1.TXWeb的基本配置,下边配置已经内置,不需要在配置。 2.TXWeb内带的返回类型包括了ajax的使用,必须在配置中注明type="ajax"才允许外部ajax调用。
    3.如何使用request,response,在继承ActionSupport后,你就直接可以直接使用这两个对象了。
    4.如何得到请求参数,ActionSupport类对象的方法会如同struts2一样自动的载入,如果没有载入方法。可以通过 getString("变量名称"),getInt("变量名称")...得到相应类型的请求参数.
    4.addActionMessage保存消息,addFieldInfo 保存错误信息。
    5.返回类型支持xml等多种类型,简单应用已经足够使用,如果要返回其他类型你可以使用response直接输出就可以了。
    6.继承ActionSupport后你可以通过,getTemplatePath()得到当前页面所在的目录,getTemplateFile() 可以得到当前模板文件的所在路径。
    7.TXWeb和struts2一样的配置方式可以支持 。


    8.虽然功能和使用上都很相像struts2,但运行方式,和运行流程上完全不同的。学习的时候可以参考struts2的用法,但运行方式上要看成完全不同的两个东西。因为这个构架的运行的模板文件,是不需要编译的。 运行方式与php比较相似。具备了php语言的简便,保留了java的优点。

    9.TXWeb可以使用任意的模板文件后缀,访问URL也可以使用任意的文件后缀。是根据jspx.properties中设置的参数决定的。所以你在模板文件中是用后缀的时候统一使用 .${suffix}来代替后缀。配置的时候也可以。

    10.本构架是一个java和javascript交叉运行的一个构架,所以在配置等里边也是可以使用javascript语言的。这样很方便。