hbuilder和项目交互

来源:互联网 发布:室内三维定位算法 编辑:程序博客网 时间:2024/05/29 17:01

首先在登录页面用户点击登录时触发事件,首先将用户输入的用户名和密码作为参数传递到app.login方法,如果验证通过跳转的头Main的方法,如果失败输出失败原因。当用户输入进行验证时涉及与后台交互:

loginButton.addEventListener('tap', function(event) {
var loginInfo = {
account: accountBox.value,
password: passwordBox.value
};
app.login(loginInfo, function(err) {
if (err) {
plus.nativeUI.toast(err);
return;
}
toMain();
console.log("login——END");
});
});
//此方法框为app.js中方法体,首先将将相关方法调整成 “基于服务端Service”的实现,接下来看看login方法的具体实现方式

(function($, owner) {

owner.serverPath="http://192.168.1.98:8080/rzclms";

owner.serverAddress=owner.serverPath+"/rest/app/";

/**

* 用户登录
**/
owner.login = function(loginInfo, callback) {
callback = callback || $.noop;
loginInfo = loginInfo || {};
loginInfo.account = loginInfo.account || '';
loginInfo.password = loginInfo.password || '';
if (loginInfo.account.length < 11) {
return callback('手机号最短为 11 个字符');
}
if (loginInfo.password.length < 6) {
return callback('密码最短为 6 个字符');
}
 

//loginInfo的值为传递过来的用户名和密码,此处为判断用户输入的用户名和密码的正确性

//服务端验证
var jsonData="";//存储栏目媒资数据对象
//1.初始Ajax加载栏目数据,通过ajax和后台进行交互
$.ajax({
  url: this.serverAddress+"driverLogin",//"appIndexInit.do",
  method:"post",
  data:{"username":loginInfo.account,"password":loginInfo.password},
  async: false,
  success: function(data){
  //1-1 存储数据,供后续展示使用
  jsonData = $.parseJSON(data);
  },
  error:function (XMLHttpRequest, textStatus, errorThrown) {
  mui.alert("无法获取服务器数据!请确保网络畅通,或稍后重试!\r\n");
}
});
//当用户第一次登录时强制性的修改密码
if (jsonData.state) {
owner.setIsFirest(jsonData.firest);
owner.setTel(loginInfo.account);
if(jsonData.firest){
return   owner.createState(jsonData.name,jsonData.token,jsonData.frequency,jsonData.isCanUp,callback);
}else{
return owner.createState(jsonData.name,jsonData.token,jsonData.frequency,jsonData.isCanUp,callback);
}
} else {
return callback(jsonData.message);
}
});

后台判断实现过程:

@RequestMapping(value="/driverLogin")
@ResponseBody
public void driverLogin(HttpServletRequest req,HttpServletResponse resp) throws Exception{
String username=req.getParameter("username");
String password=req.getParameter("password");
JSONObject json = new JSONObject(); 

List<DriversLoginEntity> list=driversLoginService.findByProperty(DriversLoginEntity.class, "cellphonenumber", username);
if(list.size()>0){
byte[] salt = PasswordUtil.getStaticSalt();
String ciphertext = PasswordUtil.encrypt(username, password, salt);

if(ciphertext.equals(list.get(0).getPassword())){

List<DriversEntity> driverList=systemService.findByProperty(DriversEntity.class, "cellphoneNumber", username);
if(driverList.size()>0){
json.put("state", true);//表示可以登录
json.put("name", driverList.get(0).getDriverName());

MD5 md5 = new MD5();
Date time=new Date();
String token=md5.getMD5ofStr(username+time+Math.random()*9000+1000);
json.put("token",token);//登录标识

if(list.get(0).getToken()==null||"".equals(list.get(0).getToken())||"null".equals(list.get(0).getToken())){
json.put("firest", true);//第一次登陆,控制强制修改密码
}else{
json.put("firest", false);
}

list.get(0).setLoginTime(time);
list.get(0).setToken(token);
driversLoginService.updateEntitie(list.get(0));

//返回上传位置信息时间间隔
PropertiesUtil util = new PropertiesUtil("sysConfig.properties");
String frequency = util.readProperty("app.gps.frequency");
json.put("frequency", frequency);

//返回手机上传磅单图片的宽度
String appUploadPicWidth = util.readProperty("app.uploadPic.width");
json.put("picWidth", appUploadPicWidth);

//返回是否可以上传位置信息标识
if(getIsCanUpGeolocation(token)){
json.put("isCanUp", 1);
}else{
json.put("isCanUp", 0);//0
}
}else{
json.put("state", false);//表示不可以登录
json.put("message", "查找不到用户姓名信息");//异常信息
}
}else{
json.put("state", false);//表示不可以登录
json.put("message", "密码错误");//异常信息
}

}else{
json.put("state", false);//表示不可以登录
json.put("message", "用户不存在");//异常信息
}

resp.getWriter().write(json.toString());
System.out.println(json);
}





2 0