`
TrueBrian
  • 浏览: 8918 次
社区版块
存档分类
最新评论

Android 中使用session机制保存用户信息

 
阅读更多

web应用中的session和cookie机制相信大家已经再熟悉不过了,cookie是一种存在于客户端上的用于保存用户浏览数据的小文件。session存在于服务器中,可以用来区分用户和保存用户信息。session会根据客户端的请求给不同客户端分配一个唯一的sessionId,用来区分session。例如用户登录之后,给用户创建一个session,并在session中保存该用户的相关信息,即可以避免用户的id在网络上传输,又可以保证区分每一个用户。

web中实现session的机制有两种:

1.通过cookie来实现

所谓通过cookie来实现,说白了就是在创建了session之后,把sessionId写入到cookie文件中,之后用户在发送请求的时候,服务器会去cookie中拿session。

2.通过url重写来实现

如果用户禁用了cookie,第一种方法就行不通了。这时就会用到第二种方法。所谓url重写,其实意思就是把sessionid放入到请求的url之后,就是每一次把sessionid显示到url后面,带到服务器后,通过sessionId找到服务器中的session对象。

方法就是催对请求的url进行处理,response.encodeURL(url),使用这个方法,、

一是可以对url进行编码,就是把url中的中文转码成浏览器地址栏中%%什么的,如果url中没有中文,则什么也不干;

二就是我们说的,可以把sessionId加入到url中。

Android中的session机制

android中的session其实道理是一样的,只不过在处理方法上有所不同。理清一下思路:当客户端发送登录请求后,第一次肯定是不会有session的,到达服务器之后,服务器可以为这个特定的客户端创建session:

  HttpSession session = request.getSession(true);  //创建session
  session.setAttribute("uid", user.getUid());      //session中放入id

上面true代表了如果已经创建了session了,则去找这个session,如果没有创建,就为其创建一个session,

第二句就是在该session中放入和该用户相关的信息。那么这个session就和这个用户一一对应,服务器就靠这个来识别用户身份。

其实前面服务器端和web应用都是一样的,但是在客户端:

因为android手机端在访问web服务器时,没有给http请求头部设置sessionID,而使用web浏览器作为客户端访问服务器时,在客户端每次发起请求的时候,都会将交互中的sessionID:JSESSIONID设置在Cookie头中携带过去,服务器根据这个sessionID获取对应的Session,而不是重新创建一个新Session(除了这个Session失效)。

以java.net.HttpURLConnection发起请求为例:

获取Cookie: 

URL url = new URL(requrl);
HttpURLConnection con= (HttpURLConnection) url.openConnection(); 
// 取得sessionid. 
String cookieval = con.getHeaderField("set-cookie"); 
String sessionid; 
if(cookieval != null) { 
sessionid = cookieval.substring(0, cookieval.indexOf(";")); 
}

//sessionid值格式:JSESSIONID=AD5F5C9EEB16C71EC3725DBF209F6178,是键值对,不是单指值

发送设置cookie:
if(sessionid != null) { 
   con.setRequestProperty("cookie", sessionid); 
}

这样的话就可以将服务器分配给客户端的sessionId取到了,在客户端发送请求的时候带上这个sessionid,服务器会根据这和sessionId自动搜索session,这样就保证了服务器和客户端在同一个会话中。


参考:http://blog.csdn.net/dacainiao007/article/details/9234585

http://my.oschina.net/janson2013/blog/111050



分享到:
评论

相关推荐

    android获取web服务器端session并验证登陆

    在Android开发中,获取Web服务器端的Session并进行登录验证是一项常见的任务,特别是在构建混合式应用或者需要与Web服务紧密交互的应用中。本篇将详细阐述这个过程中的关键知识点。 一、理解Session Session是Web...

    彻底解决android用HttpUrlConnection与web服务器之间session保持问题

    在Android开发中,当使用HttpURLConnection与Web服务器进行通信时,常常遇到的一个问题是无法正确保持session,导致每次请求都被服务器视为新的独立会话。这主要由于HTTP协议本身的无状态特性,以及Android客户端与...

    android获取web服务器端session并验证登陆实用.pdf

    当用户登录成功后,服务器会在内存中创建一个与用户相关的session对象,里面存储用户的登录信息。session通过一个唯一的session ID来标识,这个ID会被发送回客户端(通常是通过cookie),以便后续请求时客户端能够...

    SharePreference类似于JavaEE中的session

    总结起来,SharePreferences是Android开发中存储轻量级偏好设置的重要工具,而JavaEE的session则是Web应用中实现会话跟踪的核心机制。理解并熟练掌握这两种技术,对于进行Android和JavaEE开发至关重要。通过阅读博文...

    android获取web服务器端session并验证登陆[借鉴].pdf

    本话题主要讨论如何在Android应用中获取并使用Web服务器端的Session来实现用户登录验证。Web服务器通常使用Session来跟踪用户的登录状态,而Android客户端需要适当地处理Session ID的传递,以保持会话的有效性。 ...

    android与asp.net服务端共享session的方法详解

    Session是Web应用程序中用于存储用户特定信息的一种机制,通常在服务器端保存。在ASP.NET中,Session是默认开启的,可以通过Session ID来唯一标识一个用户的会话。 以下是如何在Android客户端和ASP.NET服务端实现...

    android实现自动登录

    SharedPreferences提供了一种轻量级的键值对存储机制,适合保存用户的登录状态等非敏感信息。在用户成功登录后,我们将Session ID或Token保存到SharedPreferences中,例如: ```java SharedPreferences.Editor ...

    【Android】用户登录注册界面开发及用户信息管理案例代码详解

    总的来说,这个案例涵盖了Android应用中用户管理的核心功能,通过学习和实践,开发者可以深入理解Android UI设计、网络通信、数据存储以及安全性等方面的知识。对于初学者来说,这是一个很好的起点;对于有经验的...

    android 上传和下载图片

    在Android开发中,图片的上传和下载是常见的功能需求,特别是在社交、电商或者任何涉及到用户交互的应用中。本文将详细讲解如何在Android中实现图片的选取、上传至服务器以及从服务器下载图片,并将其存储到MySQL...

    android发送文字信息至服务器端

    Hibernate的Session接口用于执行CRUD操作,例如,将接收到的文字信息保存到指定的表中。 8. **DB2数据库**:DB2是一款企业级的关系型数据库管理系统,支持多种平台。在SSH框架中,通过Hibernate的配置,我们可以...

    android实现session保持简要概述及实现

    1. **理解Session机制**: Session是一种服务器端存储用户状态的技术。当用户登录Web应用后,服务器会创建一个Session,并将用户的登录信息存储在该Session中。为了标识每个用户,服务器会给每个Session分配一个...

    Android-12306android实现登录流程

    - 12306服务器返回的数据通常是JSON格式,使用Gson或Jackson库进行解析,获取登录结果和Session ID等关键信息。 5. **处理响应**: - 分析服务器返回的状态码和消息,判断登录是否成功。成功则保存Session ID,...

    Android Cookie 深度理解

    在Android开发中,Cookie是一种非常重要的机制,它用于在客户端(比如移动设备上的应用程序)和服务器之间维护状态信息。Cookie最初被设计为Web浏览器的一种功能,但随着时间的推移,它也被广泛应用于移动应用,特别...

    简单的Android音乐播放器

    3. 会话管理:登录成功后,生成Session或Token,保存在SharedPreferences中,后续请求时携带以验证用户身份。 【网络通信】 1. 如果音乐资源在线,需使用HttpURLConnection或OkHttp等库进行网络请求,下载音乐文件...

    AndroidHttpSession

    在用户登录后,服务器通常会在服务器端创建一个Session对象,存储用户的登录信息,然后将Session ID返回给客户端,客户端将其保存在Cookie中。后续的请求,客户端都会携带这个Session ID,服务器通过这个ID找到对应...

    Android(Java) 模拟登录知乎并抓取用户信息

    在本文中,我们将深入探讨如何使用Java在Android平台上实现模拟登录知乎并抓取用户信息的过程。这个过程涉及网络请求、HTTP协议、数据解析以及JSON理解等多个关键知识点。 首先,我们需要了解的是Android的网络访问...

    android源码--自动登录demo

    SharedPreferences提供了一个轻量级的键值对存储机制,适合保存用户的配置信息或简单数据,如登录状态和用户ID。 **SharedPreferences的使用步骤:** 1. 获取SharedPreferences实例:通常在需要使用...

    android模拟登录学校教务网站的小demo

    我们需要将这些信息保存在Android的SharedPreferences或应用的内部存储中,以便后续请求时能再次发送给服务器,维持登录状态。 5. **用户界面**:在Android Studio中,使用XML布局文件设计登录界面,包括输入框、...

    Android C/S结构代码

    同时,为了优化用户体验,可以实现进度条或通知机制,让用户了解图片上传的状态。 总的来说,这个“Android C/S结构代码”项目展示了如何利用Apache Mina在Android应用中实现C/S架构,特别是图片的传输。通过学习这...

    Android记住密码自动登录,注销

    在Android应用开发中,"记住密码"和"自动登录"功能是提高用户体验的重要特性,而"注销"则是保障用户安全的必要操作。本篇将详细讲解如何在Android中实现这些功能,以及涉及到的相关知识点。 首先,我们要理解...

Global site tag (gtag.js) - Google Analytics