在登录界面,点击注册,注册成功后,把结果(用户名,密码)回传给登录界面,用来设置控件

----------------------------------------------------------------------------------------------------
HTTP的状态管理
由于基于Http协议的请求是无状态的,所以
服务端无法把同一个客户端发送的多次请求
当成一个整体来看待。但是我们有一些需求
需要服务端把同一个客户端发送的多次请求
当成一个整体。比如:登录-->购买

如何实现Http的状态管理?
1>
Cookie机制 (把涉及到的数据保存在客户端)
2>
Session机制(把涉及到的数据保存在服务端)


Cookie机制的执行原理:
1>客户端向服务端发送http请求,服务端
  返回给客户端响应数据,并且在响应数据包
  中携带cookie信息:
  Set-Cookie: cishu=10
2>客户端接收响应数据包,解析响应,获取
  cookie信息,并且把cishu=10保存在客户端
  中。
3>在客户端发送后续请求时,需要在请求
  数据包中携带cookie信息:
  Cookie:cishu=10
4>服务端接收请求,并且解析请求数据包中
  的cookie信息,执行后续业务。
 

Cookie的限制:
Cookie不能存储中文
Cookie不能存储大数据量数据
Cookie不安全



Session机制的实现原理:
1>客户端发送http请求,服务端把需要
  保存的数据保存在session对象中,并且
  把JSID以Cookie的方式传递给客户端:
  Cookie: JSESSIONID=ABCDEFG
2>客户端接收服务端响应数据包,并且把
  Cookie保存在客户端中。
3>客户端发送后请求时,需要在请求数据包
  中以cookie的形式传递JSESSIONID:
  Cookie:JSESSIONID=ABCDEFG
4>服务端接收客户端的请求,并且获取JSESSIONID,
  通过JSESSIONID获取以前分配的session对象
  获取保存过的数据。实现状态管理。
  

EMS项目之验证码
验证码的作用:
防止机器人恶意攻击服务器。

注册业务:
1>RegistActivity  XML 
  在登录界面中点击注册跳转到该activity
2>点击注册按钮,发送http请求。
3>解析响应json字符串。
4>成功: finish()
  失败: 提示错误
  

Activity反向传值:
LoginAcitivty  -->  RegistActivity
当RegistActivity销毁时,回传给LoginAcitivity
一些参数。

实现:
1>LoginActivity:
  startAcitivityForResult()
2>RegistAcitivty:
  setResult()
3>LoginActivity:
  @Override
  onActivityResult(reqCode,resCode,data){
  
  }
--------------------------------------------------------------------------------------------------
//声明的常量
        public static final int HANDLER_LOAD_IMAGE_CODE_SUCCESS=1;
public static final int HANDLER_LOGIN_SUCCESS=2;
public static final int HANDLER_LOGIN_FAIL=3;
private static final int REQUEST_CODE_GO_TO_REGIST = 100;
-----------------------------------------------------------------------------------------------------------
//在登录界面,点击注册按钮
public void doClick(View view){
switch (view.getId()) {
case R.id.btnRegist: //跳转注册界面
Intent intent = new Intent(this, RegistActivity.class);
//启动Activity   
//启动该Activity是为了获取对方回传的数据
//startActivityForResult(intent, REQUEST_CODE_GO_TO_REGIST);
startActivityForResult(intent, REQUEST_CODE_GO_TO_REGIST);
break;
-------------------------------------------------------------------------------------------------------------------------
//在注册界面,注册成功后,把数据回传给登录界面

private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case HANDLER_REGIST_FAIL: //注册失败
Toast.makeText(RegistActivity.this, "遗憾, "+msg.obj, Toast.LENGTH_SHORT).show();
break;
case HANDLER_REGIST_SUCCESS: //注册成功
Toast.makeText(RegistActivity.this, "恭喜,注册成功 ", Toast.LENGTH_SHORT).show();
//finish之前  回传给LoginActivity两个参数 
//  loginname   password
String name=etName.getText().toString();
String pwd=etPwd.getText().toString();
//调用setResult方法  
//把两个参数设置到intent中即可
Intent data=new Intent();
data.putExtra("name", name);
data.putExtra("pwd", pwd);
//setResult(RESULT_OK, data);
setResult(RESULT_OK, data)
finish();
break;
}
}
};
--------------------------------------------------------------------------------------------
/**
* 父类的方法   
* startActivityForResult()
* 当RegistActivity  finish()后  将会自动调用
* 该onActivityResult方法。
* @param requestCode   请求码
* @param resultCode 结果码
* @param data 回传数据
*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_CODE_GO_TO_REGIST:
//判断注册是否成功  如果注册成功
if(resultCode==RESULT_OK){
//则获取data中的账号和密码  动态设置到EditText中
String name=data.getStringExtra("name");
String pwd=data.getStringExtra("pwd");
etName.setText(name);
etPwd.setText(pwd);
}
break;
}
}
-------------------------------------------------------------------------------------------------
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值