TXWeb帮助

一.简介

传统模版方式开发

二. 6.x功能简介功能及配置说明

6.5版本开始标准化了,API接口方式,这里主要介绍API方式的开发和规范.传统方式也可以同时调用

三. 返回方式说明

当使用ROC方式调用返回的数据都会通过 com.github.jspxnet.txweb.result.RocResponse 这个类封装. 如果已经封装了的就不再次封装,如果是json对象,也不会自动封装,会直接返回.
    @Operate(caption = "例子",method = "/persion")
    public Persion getPersion()
    {
        Persion persion = new Persion();
        persion.setAge(101);
        persion.setName("name");
        return persion;
    }
  1. roc调用返回的是json,里边多了success=1,如果是模版方式调用返回的就是Persion这个对象.所以尽量使用原对象返回, 这样能够很好的兼容模版方式和远程分布式调用对象传输.

四. 接口调用写法说明

< code >什么时候需要封装返回,主要使用在分页查询列表.
例如
    /**
     * @param param 翻页参数
     * @return 日志列表
     */
    @Operate(caption = "日志翻页列表", method = "/list/page")
    public RocResponse<List<ActionLog>> getList(@Param("翻页参数") PageParam param) {
        IRole role = getRole();
        if (role.getUserType() < UserEnumType.MANAGER.getValue()) {
            return RocResponse.error(ErrorEnumType.POWER);
        }
        RocResponse<List<ActionLog>> rocResponse = RocResponse.success(actionLogDAO.getList(param.getField(),
                param.getFind(), param.getTerm(), param.getSort(), param.getUid(), param.getCurrentPage(), param.getCount()));
        rocResponse.setTotalCount(actionLogDAO.getCount(param.getField(), param.getFind(), param.getTerm(), param.getUid()));
        return rocResponse.setCurrentPage(param.getCurrentPage()).setCount(param.getCount());
    }
PageParam 是一个常用的翻页参数模型,能够减少代码和下边的方式一样
    @Operate(caption = "联系人列表", method =  "/list/page")
    public RocResponse<List<ContactsVO>> getContactsList(@Param(caption = "查询关键字") String[] field, @Param(caption = "查询关键字") String[] find,
                                                     @Param(caption = "分组") String nodeId,
                                                     @Param(caption = "排序") String sort, @Param(caption = "页数") int currentPage, @Param(caption = "行数") int count) {
        return xxx;
    }
下边是一个全局参数的例子,update没有配置method默认就是方法名称
区别是PageParam param 属于外部全局参数,而下边这个是内部参数.传递方式有区别

  /**
     * 请求:   String url = "http://127.0.0.1:8080/demo/persion/update.jhtml";
     * {"params": {
     * "old": 18,
     * "name": "小明同学",
     * "sumOld": 3
     * }}
     * <p>
     * <p>
     * 返回:(注意sum的来源)
     * {
     * "protocol": "jspx.net-remote",
     * "code": 200,
     * "data": {
     * "old": 18,
     * "name": "小明同学",
     * "sum": 21,
     * "sumOld": 3
     * },
     * "success": 1,
     * "message": "success",
     * "version": "3.0"
     * }
     * <p>
     * 这里演示 参数QO进入,和DTO 的返回
     *
     * @param demoParam
     * @return
     */
    @Override
    @Operate(caption = "演示对象参数")
    public DemoDto update(@Param DemoParamReq demoParam)
    {

        //接收到参数
        //这里加入自己的逻辑处理,或者封装在service中
        DemoDto demoDto = BeanUtil.copy(demoParam,DemoDto.class);
        //返回对象 DTO
        return demoDto;
    }
演示分布式调用的例子,所有的API只有写了接口,默认做一个index的方法或者已有方法,这样就可以调用这个接口里边的所有方法
    @Test
    public void testHessianClient() throws Exception {
        String url = "http://127.0.0.1:8080/demo/persion/index.jhtml";

        HessianClient hessianClient = HessianClientFactory.getInstance();
        hessianClient.setSessionId("token  Auth"); //认证token
        int response = 0;
        try {
            SpringPersionInterface springPersionInterface = hessianClient.getInterface(SpringPersionInterface.class, url);
            response = springPersionInterface.save();
        } catch (RocException e) {
             e.getResponse();
            System.out.println(new JSONObject(response).toString());
        }

    }

五. 注释方式url配置

url映射类头部注释标签@HttpMethod,在ioc中配置扫描路径,扫描到后会自动载入
@HttpMethod(caption = "功能描述", actionName = "*", namespace = "mall/collect")
@Bean(namespace = "mall", singleton = true)

六. 配置API文档

你所开发的代码,都会自动生成API文档,是否开放出API文档只需要配置一下 ioc配置, ${softName} 表示你的软件命名空间,一般都是网站的根目录
<?xml version="1.0" encoding="UTF-8"?>
<sioc>
    <sioc namespace="${softName}/api" extends="${softName}">
        <bean class="com.github.jspxnet.txweb.view.ApiDocView" />
    </sioc>
</sioc>
txweb配置
<?xml version="1.0" encoding="UTF-8"?>
<txweb>
    <package extends="${softName}" namespace="${softName}/api">
        <action name="appname" class="com.github.jspxnet.txweb.view.ApiDocView" caption="API文档" method="getAppName"/>
        <action name="indexing|fielding" class="com.github.jspxnet.txweb.view.ApiDocView" caption="API文档"/>
    </package>
    <package extends="${softName}/api/document" namespace="${softName}/api">
        <action name="*" class="com.github.jspxnet.txweb.view.ApiDocView" caption="API文档详细"/>
    </package>
    <package extends="${softName}/api/table" namespace="${softName}/api">
        <action name="*" class="com.github.jspxnet.txweb.view.ApiDocView" caption="API文档表结构"/>
    </package>
</txweb>

六. 注释方式自动载入

scan 会自动扫描 相关注释载入系统,并不需要每个都手动配置 @HttpMethod @Bean @Describe
<?xml version="1.0" encoding="UTF-8"?>
<txweb>
    <package namespace="demo" extends="global">
        <scan package="jspx.example" />
    </package>
    <load file="txweb/api.xml" softName="demo" />
</txweb>