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

QQ登录

只需一步,快速开始

查看: 65991|回复: 60

利用WEX5的BAAS修改的登录实例和简单通讯录实例(Java)

  [复制链接]

33

主题

213

帖子

1158

积分

金牌会员

Rank: 6Rank: 6

积分
1158
QQ
发表于 2015-5-19 07:27:40 | 显示全部楼层 |阅读模式
本帖最后由 biyaooo 于 2015-5-19 07:42 编辑

并不熟悉JAVA语言和编程思路,很多地方安全性和逻辑性没有过多考虑(比如没有做MD5之类的加密),仅仅是提供给新人一些思路。通讯录的电话号码,用WEX5最新版本做的,打包后,测试是能直接调用拨打电话的界面。

QQ图片20150519074137.jpg QQ图片20150519072310.jpg

login.w

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <div xmlns="http://www.w3.org/1999/xhtml" component="$UI/system/components/justep/window/window" design="device:m;">  
  3.   <div component="$UI/system/components/justep/model/model" xid="model1" style="width:143px;height:auto;left:14px;top:443px;" onLoad="model1Load">
  4.   <div component="$UI/system/components/justep/data/data" autoLoad="true" xid="userData" idColumn="fID" autoNew="false" confirmRefresh="false">
  5.   <column label="fID" name="fID" type="Integer" xid="default1"></column>
  6.   <column label="username" name="username" type="String" xid="default1"></column>
  7.   <column label="userpass" name="password" type="String" xid="default2"></column>
  8.   <column label="Sname" name="sbrand" type="String" xid="default3"></column>
  9.   <column label="Sarea" name="shopname" type="String" xid="default4"></column>
  10.   <column label="Sbrand" name="brandsort" type="String" xid="default5"></column>
  11.   <column label="Spower" name="smarket" type="String" xid="default6"></column>
  12.   <column label="Sdepartment" name="sarea" type="String" xid="default7"></column>
  13.   <column label="city" name="city" type="String" xid="default8"></column>
  14.   <column label="mcity" name="mcity" type="String" xid="default9"></column>
  15.   <column label="scity" name="scity" type="String" xid="default10"></column></div>
  16.   </div>
  17.   <span component="$UI/system/components/justep/messageDialog/messageDialog" xid="messageDialog" style="left:13px;top:415px;"></span><div component="$UI/system/components/justep/contents/contents" class="x-contents x-full" active="0" xid="contents1">
  18.    <div class="x-contents-content" xid="content1" style="background-image:url(img/loginbg4.jpg);"><div xid="div1" style="margin:10px 50px 0px 50px;" align="center"><img src="img/logo.png" alt="" xid="image1" height="150"></img>
  19.   </div>
  20.   <div class="form-vertical" component="$UI/system/components/bootstrap/form/form" xid="form1"><div xid="div12" class="form-group" style="margin-right:auto;margin-left:auto;width:95%;">
  21.   
  22.   <label xid="label4" class="sr-only"><![CDATA[用户名]]></label>
  23.   <div xid="div14" class="input-group"><div xid="div15" class="input-group-addon"><span class="glyphicon glyphicon-user"></span></div>
  24.   <input component="$UI/system/components/justep/input/input" class="form-control" xid="username" placeHolder="请输入用户名" autoFocus="true"></input></div></div><div xid="div13" class="form-group" style="margin-right:auto;margin-left:auto;width:95%;">  <label xid="label5" class="sr-only"><![CDATA[密码]]></label>
  25.   <div xid="div16" class="input-group"><div xid="div17" class="input-group-addon"><span class="glyphicon glyphicon-edit"></span></div>
  26.   <input component="$UI/system/components/justep/input/password" class="form-control" xid="password" placeHolder="请输入密码"></input>
  27.   </div></div></div><div component="$UI/system/components/justep/row/row" class="x-row" xid="row4">
  28.    <div class="x-col" xid="col10" style="text-align:center;"><a component="$UI/system/components/justep/button/button" class="btn btn-success btn-block" label="登录系统" xid="button1" onClick="btnCheckUserLogin">
  29.    <i xid="i1"></i>
  30.    <span xid="span1">登录系统</span></a>
  31.   </div>
  32.    </div><div component="$UI/system/components/justep/row/row" class="x-row" xid="row1">
  33.    <div class="x-col" xid="col2"><div component="$UI/system/components/justep/labelEdit/labelEdit" class="x-label-edit x-label30" xid="labelToggle2">
  34.    <label class="x-label" xid="label3" style="text-align:center;"><![CDATA[记住密码]]></label>
  35.    <span component="$UI/system/components/justep/button/toggle" class="x-toggle x-edit" xid="toggle1" ON="开启" OFF="关闭"></span></div></div>
  36.    </div>
  37.   <div xid="div3" style="margin:50px 20px 50px 20px;height:50px;text-align:center;"><span xid="span2"><![CDATA[ © Biyao]]></span>
  38.   </div>
  39.   </div></div>
  40.   </div>
复制代码

login.js
  1. define(function(require){
  2.         var $ = require("jquery");
  3.         var Baas = require("$UI/blshopApp/JS/baas");
  4.         require("$UI/system/lib/cordova/cordova");
  5.         require("cordova!org.apache.cordova.device");
  6.         
  7.         var Model = function(){
  8.                 this.callParent();
  9.         };

  10.         
  11.         Model.prototype.btnCheckUserLogin = function(event){
  12.                 var self = this;
  13.                 var userData = this.comp("userData");
  14.                 //用户名和密码为空提示
  15.                 if ( $.trim(this.comp('username').val()) === "" || $.trim(this.comp('password').val()) === "") {
  16.                         this.comp("messageDialog").show({
  17.                                 "title" : "温馨提示",
  18.                                 "message" : "忘记输入用户名或密码?"
  19.                         });
  20.                 }
  21.                 else
  22.                 {
  23.                 var params = {
  24.                 "username":this.comp('username').val(),
  25.                 "password":this.comp('password').val()
  26.                 };
  27.                 // 请求成功后的回调方法
  28.                 var success = function(resultData) {
  29.                         userData.loadData(resultData);
  30.                         userData.refreshData();        
  31.                         if (userData.val('username')&&userData.val('password')) {
  32.                                 localStorage.setItem('username',userData.val('username'));
  33.                                 localStorage.setItem('password',userData.val('password'));
  34.                                 localStorage.setItem('sbrand',userData.val('sbrand'));
  35.                                 localStorage.setItem('brandsort',userData.val('brandsort'));
  36.                                 localStorage.setItem('smarket',userData.val('smarket'));
  37.                                         if(self.comp('toggle1').val()===true)  //如果记住密码选中,登录成功则将用户名和密码保存到localStorage中
  38.                                         {
  39.                                                 localStorage.setItem('un',userData.val('username'));  
  40.                                                 localStorage.setItem('pw',userData.val('password'));
  41.                                                 localStorage.setItem('remeberMe',true);
  42.                                         }else    //否则不存储localStorage
  43.                                         {
  44.                                                 localStorage.removeItem("un");
  45.                                                 localStorage.removeItem("pw");
  46.                                                 localStorage.removeItem('remeberMe');
  47.                                         }
  48.                                 window.location.href="./index.w";   //登录成功,跳转到APP首页
  49.                                 
  50.                         }else
  51.                         {
  52.                                                 self.comp("messageDialog").show({
  53.                                                 "title" : "温馨提示",
  54.                                                 "message" : "输入的用户名或密码不正确!"
  55.                                 });
  56.                         }        
  57.                 };
  58.                 // 发送请求
  59.                 Baas.sendRequest({
  60.                         "url" : "/blshop", // servlet请求地址
  61.                         "action" : "queryUserInfo", // action
  62.                         "params" : params, // action对应的参数
  63.                         "success" : success // 请求成功后的回调方法
  64.                 });
  65.         }

  66. };

  67.         Model.prototype.model1Load = function(event){
  68.                 if(localStorage.getItem('remeberMe')){
  69.                         var username = localStorage.getItem('un') ;
  70.                         var password = localStorage.getItem('pw') ;
  71.                         this.comp("username").set({value:username});
  72.                         this.comp("password").set({value:password});
  73.                         this.comp("toggle1").set({value:true});
  74.                 }
  75.         };

  76.         return Model;
  77. });
复制代码

QQ图片20150519072340.jpg

评分

参与人数 1威望 +12 收起 理由
Masion + 12 很给力!

查看全部评分

33

主题

213

帖子

1158

积分

金牌会员

Rank: 6Rank: 6

积分
1158
QQ
 楼主| 发表于 2015-5-19 07:32:53 | 显示全部楼层
本帖最后由 biyaooo 于 2015-5-19 18:27 编辑

后端利用Baas添加的 queryUserInfo动作代码
  1.         private static void queryUserInfo(ServletRequest request, ServletResponse response) throws SQLException, IOException, NamingException {
  2.                 // 参数序列化
  3.                 JSONObject params = (JSONObject) JSONObject.parse(request.getParameter("params"));

  4.                 // 获取参数
  5.                 Object columns = params.get("columns"); // 列定义
  6.                 Integer limit = params.getInteger("limit"); // 分页查询的行数
  7.                 Integer offset = params.getInteger("offset"); // 分页查询的行偏移
  8.                 String username = params.getString("username"); // 分页查询的行数
  9.                 String password = params.getString("password"); // 检索关键字
  10.                 //System.out.println(password);
  11.                 // 存放SQL中的参数值
  12.                 List<Object> sqlParams = new ArrayList<Object>();
  13.                 // 存放SQL中的过滤条件
  14.                 List<String> filters = new ArrayList<String>();

  15.                
  16.                         filters.add("username = ? and password =?");
  17.                         sqlParams.add(username);
  18.                         sqlParams.add(password);
  19.                

  20.                 Table table = null;
  21.                 // 获取数据源连接
  22.                 Connection conn = Util.getConnection(DATASOURCE_BLSHOPAPP);
  23.                 try {
  24.                         // 执行单表数据查询,返回Table
  25.                         table = Util.queryData(conn, TABLE_APP_USER, columns, filters, "fID DESC", sqlParams, offset, limit);
  26.                 } finally {
  27.                         // 必须关闭数据源连接
  28.                         conn.close();
  29.                 }

  30.                 // 输出Table做为返回结果,这里会自动转换为Table的JSON格式
  31.                 Util.writeTableToResponse(response, table);
  32.         }
复制代码



通讯录加载对应的JS代码 Content3.js
  1. Model.prototype.addresslistDataCustomRefresh = function(event){
  2.                         var data = event.source;
  3.                         //alert(Baas.getDataColumns(data));
  4.                         // 构造请求参数
  5.                         var params = {
  6.                                 // 列定义
  7.         //                        "columns" : data.getColumnIDs(),
  8.         //                         应从前端传入完整列定义(Baas.getDataColumns(data)), 以解决oracle等数据库不区分date、time、datetime,导致的数据格式转换问题;
  9.         //                        服务端兼容了以前只传入列名字符串(data.getColumnIDs())的写法,但是已不再推荐。                                
  10.                                 //"columns" : Baas.getDataColumns(data),
  11.                                 // 分页信息 - 行数
  12.                                 "limit" : event.limit,
  13.                                 // 分页信息 - 行偏移
  14.                                 "offset" : event.offset,
  15.                                 // 检索关键字
  16.                                 "search" : this.getElementByXid("addressInput").value
  17.                         };
  18.                         // 请求成功后的回调方法
  19.                         var success = function(resultData) {
  20.                                 // 通过event.options.append判断数据是否增量加载
  21.                                 var append = event.options && event.options.append;
  22.                                 // 加载返回数据到data
  23.                                 data.loadData(resultData, append);
  24.                         };
  25.                         // 发送请求
  26.                         Baas.sendRequest({
  27.                                 "url" : "/blshop", // servlet请求地址
  28.                                 "action" : "queryAddressList", // action
  29.                                 "params" : params, // action对应的参数
  30.                                 "success" : success // 请求成功后的回调方法
  31.                         });
  32.         };
  33.         
复制代码

通讯录的代码,我的程序分了4个Content,我只把通讯录里面Content的代码贴出来

Content3.w

  1. <div class="x-contents-content" xid="content4"><div component="$UI/system/components/justep/panel/panel" class="x-panel x-full" xid="panel3">
  2.    <div class="x-panel-top" xid="top3">
  3.     <div component="$UI/system/components/justep/row/row" class="x-row" xid="row3">
  4.      <div class="x-col" xid="col15">
  5.       <div class="input-group" component="$UI/system/components/bootstrap/inputGroup/inputGroup" xid="inputGroup2">
  6.        <input type="text" class="form-control" component="$UI/system/components/justep/input/input" xid="addressInput" onChange="{operation:'addresslistData.refresh'}"></input>
  7.        <div class="input-group-btn" xid="div6">
  8.         <a component="$UI/system/components/justep/button/button" class="btn x-black btn-only-icon" label="button" xid="button10" icon="icon-android-search" onClick="{operation:'addresslistData.refresh'}">
  9.          <i xid="i3" class="icon-android-search"></i>
  10.          <span xid="span3"></span></a> </div> </div> </div> </div> </div>
  11.    <div class="x-panel-content" xid="content7">
  12.     <div class="x-scroll" component="$UI/system/components/justep/scrollView/scrollView" xid="scrollView1">
  13.      <div class="x-content-center x-pull-down container" xid="div7">
  14.       <i class="x-pull-down-img glyphicon x-icon-pull-down" xid="i16"></i>
  15.       <span class="x-pull-down-label" xid="span5">下拉刷新...</span></div>
  16.      <div class="x-scroll-content" xid="div16">
  17.       <div component="$UI/system/components/justep/list/list" class="x-list" xid="list1" data="addresslistData" limit="-1">
  18.        <ul class="x-list-template" xid="listTemplateUl1">
  19.         <li xid="li1">
  20.          <div component="$UI/system/components/justep/row/row" class="x-row" xid="row2" style="padding:0px">
  21.           <div class="x-col" xid="col12">
  22.            <div component="$UI/system/components/justep/labelEdit/labelEdit" class="x-label-edit" xid="labelOutput1" style="margin:0px">
  23.    <label class="x-label" xid="label2"><![CDATA[姓名:]]></label>
  24.    <div component="$UI/system/components/justep/output/output" class="x-output x-edit" xid="output5" bind-ref="ref('name')"></div></div></div>
  25.           <div class="x-col" xid="col13">
  26.            <label xid="label5"><![CDATA[电话:]]></label>
  27.   <a xid="a1" bind-text="ref('phone')" data-bind="attr:{href:'tel:'+val('phone')}"><![CDATA[]]></a></div>
  28.   </div>
  29.   <div component="$UI/system/components/justep/row/row" class="x-row" xid="row5">
  30.    <div class="x-col" xid="col16" style="padding:0px;border-bottom-style:dashed;border-bottom-width:1px;border-bottom-color:#15800D;"><div component="$UI/system/components/justep/labelEdit/labelEdit" class="x-label-edit" xid="labelOutput3" style="margin:0px">
  31.    <label class="x-label" xid="label4" style="background-color:transparent;"><![CDATA[通讯地址:]]></label>
  32.    <div component="$UI/system/components/justep/output/output" class="x-output x-edit" xid="output7" bind-ref="ref('address')"></div></div></div>
  33.    </div></li> </ul> </div>
  34.   </div>
  35.      <div class="x-content-center x-pull-up" xid="div5">
  36.       <span class="x-pull-up-label" xid="span17">加载更多...</span></div> </div> </div> </div></div>
复制代码


回复 支持 2 反对 0

使用道具 举报

33

主题

213

帖子

1158

积分

金牌会员

Rank: 6Rank: 6

积分
1158
QQ
 楼主| 发表于 2015-5-19 07:29:29 | 显示全部楼层
本帖最后由 biyaooo 于 2015-5-19 18:27 编辑

后端Baas添加的 Java代码

  1. private static void queryAddressList(ServletRequest request, ServletResponse response) throws SQLException, IOException, NamingException {
  2.                 // 参数序列化
  3.                 JSONObject params = (JSONObject) JSONObject.parse(request.getParameter("params"));

  4.                 // 获取参数
  5.                 Object columns = params.get("columns"); // 列定义
  6.                 Integer limit = params.getInteger("limit"); // 分页查询的行数
  7.                 Integer offset = params.getInteger("offset"); // 分页查询的行偏移
  8.                 String search = params.getString("search"); // 检索关键字

  9.                 // 存放SQL中的参数值
  10.                 List<Object> sqlParams = new ArrayList<Object>();
  11.                 // 存放SQL中的过滤条件
  12.                 List<String> filters = new ArrayList<String>();
  13.                 if (!Util.isEmptyString(search)) {
  14.                         // 增加过滤条件
  15.                         filters.add("name LIKE ? OR phone LIKE ? OR address LIKE ? OR sort LIKE ?");
  16.                         // 检索关键字中如果没有%,则前后自动加%
  17.                         search = (search.indexOf("%") != -1) ? search : "%" + search + "%";
  18.                         // sqlParams的参数个数和顺序必须与过滤条件的?相匹配
  19.                         for (int i = 0; i < 4; i++) {
  20.                                 sqlParams.add(search);
  21.                         }
  22.                 }


  23.                 Table table = null;
  24.                 // 获取数据源连接
  25.                 Connection conn = Util.getConnection(DATASOURCE_BLSHOPAPP);
  26.                 try {
  27.                         // 执行单表数据查询,返回Table
  28.                         table = Util.queryData(conn, TABLE_APP_ADDRESS, columns, filters, "fID DESC", sqlParams, offset, limit);
  29.                 } finally {
  30.                         // 必须关闭数据源连接
  31.                         conn.close();
  32.                 }

  33.                 // 输出Table做为返回结果,这里会自动转换为Table的JSON格式
  34.                 Util.writeTableToResponse(response, table);
  35.         }        
  36.         
复制代码


回复 支持 1 反对 0

使用道具 举报

33

主题

213

帖子

1158

积分

金牌会员

Rank: 6Rank: 6

积分
1158
QQ
 楼主| 发表于 2015-5-19 07:31:20 | 显示全部楼层
本帖最后由 biyaooo 于 2015-5-19 18:28 编辑

占位!
回复

使用道具 举报

4

主题

10

帖子

43

积分

新手上路

Rank: 1

积分
43
QQ
发表于 2015-5-19 09:11:26 | 显示全部楼层
很好很实用!赞一个!
回复 支持 反对

使用道具 举报

13

主题

95

帖子

240

积分

中级会员

Rank: 3Rank: 3

积分
240
QQ
发表于 2015-5-19 11:32:21 | 显示全部楼层
想收藏,可是找不到收藏地方啊
找到了
智能硬件爱好者
回复 支持 反对

使用道具 举报

1

主题

4

帖子

55

积分

初级会员

Rank: 2

积分
55
QQ
发表于 2015-5-19 15:59:01 | 显示全部楼层
很不错,加油!!!
回复 支持 反对

使用道具 举报

13

主题

95

帖子

240

积分

中级会员

Rank: 3Rank: 3

积分
240
QQ
发表于 2015-5-27 17:01:21 | 显示全部楼层
哪一部分是前台填写的账号密码与后台数据库里的账号密码进行校验的部分呢?
我改了之后总是返回null
智能硬件爱好者
回复 支持 反对

使用道具 举报

33

主题

213

帖子

1158

积分

金牌会员

Rank: 6Rank: 6

积分
1158
QQ
 楼主| 发表于 2015-5-27 19:32:27 | 显示全部楼层
luo123xj123 发表于 2015-5-27 17:01
哪一部分是前台填写的账号密码与后台数据库里的账号密码进行校验的部分呢?
我改了之后总是返回null ...

queryUserInfo
回复 支持 反对

使用道具 举报

13

主题

95

帖子

240

积分

中级会员

Rank: 3Rank: 3

积分
240
QQ
发表于 2015-5-27 19:35:47 | 显示全部楼层
能加你个qq 吗?我这里还是调不通,想请教一下。我的是895919745.谢谢了
智能硬件爱好者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 05:47 , Processed in 0.071205 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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