起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3110|回复: 0

[分享] app移动端开发和微信开发

[复制链接]

32

主题

91

帖子

397

积分

中级会员

Rank: 3Rank: 3

积分
397
QQ
发表于 2015-7-16 15:43:21 | 显示全部楼层 |阅读模式
本帖最后由 justepcjl 于 2015-7-16 15:43 编辑

一。x5移动端开发
      wex5开发没有后台biz层,只有ui。所以wex5移动端开发只需向页面通过ajax请求后台,后台犯浑json格式的数据,就可以了,而后台可以是任意的如java,.net,ssh架构的等等。我们这用的是bass server后台。
*。移动端后台

移动端服务端和前端视图

移动端服务端和前端视图

这是wex5中j2ee视图,我们用的是bass server后台,如果,切换到studio视图,那么就只有ui2和native目录了。这ui2和之前的ui区别就在于UI2兼容了移动端和pc端,区别仅在于.w文件。如果将.w文件改为.m.w文件那么移动端就可以访问了,就只在一个后缀。


移动端服务端视图

移动端服务端视图

上面这张图就是bass server目录结构。com.justep属于移动端开发的程序包(除了com.justep.weixin.mp);me.chanjar属于微信开发的程序包,是使用的github上面开源的jar包。
      com.justep.bass.data是对json格式数据的定义。
      

json数据结构

json数据结构

      //一些包中的类都是servlet
      com.justep.bass.project 是我自己写的工程
      com.justep.bass.takeout 是wex5自带的外卖
      com.justep.bass.test是测试连接数据库,并调用com.justep.bass.data包中的utill数据库连接程序,并将结果返回为json数据格式。

        com.juste.bass.takeout中关键代码示例:        public class DemoServlet extends HttpServlet {
        private static final long serialVersionUID = 1452041171629615960L;
        private static final String DATASOURCE_TAKEOUT = "jdbc/takeout";        //---------------数据库,
         private static final String TABLE_TAKEOUT_FOOD = "takeout_food";  //---------------数据库表
        private static final String TABLE_TAKEOUT_USER = "takeout_user";
        private static final String TABLE_TAKEOUT_ORDER = "takeout_order";
        private static final String TABLE_TAKEOUT_REGION = "takeout_region";
        @Override
        // Servlet入口,通过判断action参数,进入各自对应的实现方法
        public void service(ServletRequest request, ServletResponse response) throws ServletException {
                try {
                        String action = request.getParameter("action");          //---------------ajax传入参数
                        if ("queryOrder".equals(action)) {
                                queryOrder(request, response);
                        } else if ("saveOrder".equals(action)) {
                                saveOrder(request, response);
                        } else if ("queryRegionTree".equals(action)) {
                                queryRegionTree(request, response);
                        } else if ("queryRegionTreeByParent".equals(action)) {
                                queryRegionTreeByParent(request, response);
                        } else if ("queryUser".equals(action)) {
                                queryUser(request, response);
                        } else if ("saveUser".equals(action)) {
                                saveUser(request, response);
                        } else if ("saveMasterDetail".equals(action)) {
                                saveMasterDetail(request, response);
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                        throw new ServletException(e);
                }
        }

        // 查询订单,实现了分页查询和按检索关键字过滤
        private static void queryOrder(ServletRequest request, ServletResponse response) throws SQLException, IOException, NamingException {
                // 参数序列化
                JSONObject params = (JSONObject) JSONObject.parse(request.getParameter("params"));
                // 获取参数
                Object columns = params.get("columns"); // 列定义
                Integer limit = params.getInteger("limit"); // 分页查询的行数
                Integer offset = params.getInteger("offset"); // 分页查询的行偏移
                String search = params.getString("search"); // 检索关键字
                // 存放SQL中的参数值
                List<Object> sqlParams = new ArrayList<Object>();
                // 存放SQL中的过滤条件
                List<String> filters = new ArrayList<String>();
                if (!Util.isEmptyString(search)) {
                        // 增加过滤条件
                        filters.add("fUserName LIKE ? OR fPhoneNumber LIKE ? OR fAddress LIKE ? OR fContent LIKE ?");
                        // 检索关键字中如果没有%,则前后自动加%
                        search = (search.indexOf("%") != -1) ? search : "%" + search + "%";
                        // sqlParams的参数个数和顺序必须与过滤条件的?相匹配
                        for (int i = 0; i < 4; i++) {
                                sqlParams.add(search);
                        }
                }               
                // 按用户ID过滤,用于主从数据示例
                String userID = params.getString("userID");
                if (!Util.isEmptyString(userID)) {
                        filters.add("fUserID = ?");
                        sqlParams.add(userID);
                }               
                Table table = null;
                // 获取数据源连接
                Connection conn = Util.getConnection(DATASOURCE_TAKEOUT);
                try {
                        // 执行单表数据查询,返回Table
                        table = Util.queryData(conn, TABLE_TAKEOUT_ORDER, columns, filters, "fCreateTime DESC", sqlParams, offset, limit);
                } finally {
                        // 必须关闭数据源连接
                        conn.close();
                }
                // 输出Table做为返回结果,这里会自动转换为Table的JSON格式
                Util.writeTableToResponse(response, table);   
  //-------------------(JSONObjectjson=Transform.tableToJson(table);response.setContentType("text/html;charset=utf8");response.getWriter().write(json.toJSONString());)               返回json数据,给页面
------------------//
        }

        // 保存订单
        private static void saveOrder(ServletRequest request, ServletResponse response) throws ParseException, SQLException, NamingException {
                // 参数序列化
                JSONObject params = (JSONObject) JSONObject.parse(request.getParameter("params"));
                // 获取参数
                JSONObject data = params.getJSONObject("data"); // 订单数据的JSON格式
                // JSON转换Table
                Table table = Transform.jsonToTable(data);
                // 获取数据源连接
                Connection conn = Util.getConnection(DATASOURCE_TAKEOUT);
                try {
                        // 开启事务
                        conn.setAutoCommit(false);
                        try {
                                // 保存Table
                                Util.saveData(conn, table, TABLE_TAKEOUT_ORDER);
                                // 提交事务
                                conn.commit();
                        } catch (SQLException e) {
                                // 如果发生异常,首先回滚事务,然后把异常继续抛出
                                conn.rollback();
                                throw e;
                        }
                } finally {
                        // 必须关闭数据源连接
                        conn.close();
                }
        }
}*。x5移动端开发  前端页面
        Model.prototype.userDataCustomRefresh = function(event) {
                var data = event.source;
                var params = {
                        "columns" : Baas.getDataColumns(data),
                        "id" : this._userID
                };
                var success = function(resultData) {
                        var append = event.options && event.options.append;
                        data.loadData(resultData, append);
                };
                Baas.sendRequest({
                        "url" : "/takeout",
                        "action" : "queryUser",
                        "params" : params,
                        "success" : success
                });
        };



微信与移动服务端连接配置

微信与移动服务端连接配置
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-18 15:26 , Processed in 0.064988 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表