|
本帖最后由 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数据结构
//一些包中的类都是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
});
};
|
-
微信与移动服务端连接配置
|